Mettre à jour vim intégré sur Mac OS X

112

Je sais que cela pourrait être plus approprié chez Ask Different, mais comme j'ai essayé d'ajouter des balises là-bas, il n'y avait pas de vimbalise, seulement macvim. Alors j'ai pensé que je pourrais avoir un meilleur public ici.

Dans le terminal, je fais ce qui suit

$ vim --version
VIM - Vi IMproved 7.2 (2008 Aug 9, compiled Jan 31 2010 13:33:49)

Lorsque je navigue sur http://www.vim.org , je vois une actualité

Vim 7.3 est sorti!

Comment mettre à jour mon vim intégré? J'aimerais beaucoup le faire proprement (c'est-à-dire pas d'installations en double, ni de téléchargements supplémentaires, pas de macports, etc.)

J'ai envisagé d'utiliser Mercurial (car je l'utilise déjà pour d'autres choses), selon les instructions ici .

$ hg clone https://vim.googlecode.com.hg/ vim
$ cd vim/src
$ make

Mais je pense que cela ferait une installation en double. Malgré mon exigence "propre" comme mentionné ci-dessus, les solutions "impures" sont également les bienvenues, car il n'y a peut-être pas d'autre moyen.

Trousse
la source
8
En général, je pense qu'il est préférable de ne pas gâcher les bits installés par Apple et d'utiliser macports / homebrew / etc. ou construisez-le vous-même et installez-le /usr/local/. Pas comme si ça allait prendre beaucoup de place.
steveax
github.com/b4winckler/macvim/releases <- vous pouvez télécharger les derniers instantanés macvim ici
lfender6445

Réponses:

119

N'écrasez pas le Vim intégré.

Au lieu de cela, installez-le à partir de la source dans un emplacement différent ou via Homebrew ou MacPorts dans leur emplacement par défaut, puis ajoutez cette ligne à votre .bashrc ou .profile:

alias vim='/path/to/your/own/vim'

et / ou changer votre $PATH pour qu'il regarde son emplacement avant l'emplacement par défaut.

La meilleure chose à faire, à mon avis, est simplement de télécharger le dernier MacVim qui est livré avec un exécutable vim très complet et de l'utiliser dans Terminal.app comme ça.

alias vim='/Applications/MacVim.app/Contents/MacOS/Vim' # or something like that, YMMV
romainl
la source
3
Sur Mac OS X 10.8.2, le chemin est légèrement différent:/Applications/MacVim.app/Contents/MacOS/Vim
zakangelle
2
Non, c'est la même chose sur toutes les versions de Mac OS X. Je viens de faire une faute de frappe. Merci.
romainl
@ fabian789: Premièrement parce que c'est inutile, deux parce que le soft vaut mieux que dur, trois parce que Vim par défaut fonctionne et si quelque chose ne va pas, vous pourriez très bien ne plus avoir de Vim qui fonctionne, quatre une mise à jour du système peut écraser votre Vim et la liste pourrait probablement continuer encore et encore…
romainl
2
... ou alias vim='mvim -v'. Mais les deux échouent avec l' sudo vimutilisation de l'ancienne version. Je suggérerais d'utiliser la réponse de @ RobertMartin ou un gestionnaire de paquets. Il y a aussi une autre option: cette réponse de Slizzered sur serverfault.com, qui vous permet de passer des alias à sudo.
Brian McCutchon
«Les alias sont des raccourcis pour un shell interactif; ils ne sont pas utilisés par d'autres processus», explique cette réponse. stackoverflow.com/questions/37466767/... Par conséquent, cela ne fonctionne pas pour, disons git difftoolou git commit.
jasonszhao
130

Si je comprends bien les choses, vous voulez installer sur votre Vim existant, pour le meilleur ou pour le pire :-) C'est une mauvaise idée et ce n'est pas la manière "propre" de le faire. Pourquoi? Eh bien, OS X s'attend à ce que rien ne change jamais dans / usr / bin à son insu, donc chaque fois que vous écrasez des éléments là-dedans, vous risquez de briser une interdépendance complexe. Et, disons que vous cassez quelque chose - il n'y a aucun moyen de «réparer» ce dommage. Vous serez triste et seul. Vous devrez peut-être réinstaller OS X.

Partie 1: Une meilleure idée

La manière "propre" est d'installer dans un endroit séparé, et de donner une priorité plus élevée au nouveau binaire dans $ PATH. Voici comment je recommande de faire cela:

$ # Create the directories you need
$ sudo mkdir -p /opt/local/bin
$ # Download, compile, and install the latest Vim
$ cd ~
$ hg clone https://bitbucket.org/vim-mirror/vim or git clone https://github.com/vim/vim.git
$ 
$ cd vim
$ ./configure --prefix=/opt/local
$ make
$ sudo make install
$ # Add the binary to your path, ahead of /usr/bin
$ echo 'PATH=/opt/local/bin:$PATH' >> ~/.bash_profile
$ # Reload bash_profile so the changes take effect in this window
$ source ~/.bash_profile

Voila! Maintenant, lorsque nous utiliserons vim, nous utiliserons le nouveau. Mais, pour revenir à notre ancienne configuration en cas d'énormes f * ckups, nous pouvons simplement supprimer le répertoire / opt.

$ which vim
/opt/local/bin/vim
$ vim --version | head -n 2
VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Aug 27 2011 20:55:46)
MacOS X (unix) version

Voyez à quel point c'est propre.

Je recommande de ne pas installer dans / usr / local / bin lorsque vous souhaitez remplacer les binaires dans / usr / bin, car par défaut, OS X place / usr / bin une priorité plus élevée dans $ PATH que / usr / local / bin, et vissant avec qui ouvre sa propre boîte de vers ... Alors, c'est ce que vous DEVRIEZ faire.

Partie 2: La "bonne" réponse (mais une mauvaise idée)

En supposant que vous êtes prêt à le faire, vous êtes définitivement sur la bonne voie. Pour installer en plus de votre installation actuelle, vous devez définir le répertoire "prefix". C'est fait comme ça:

hg clone https://bitbucket.org/vim-mirror/vim or git clone https://github.com/vim/vim.git
cd vim
./configure --prefix=/usr
make
sudo make install

Vous pouvez également passer "configure" quelques autres options, si vous le souhaitez. Faites "./configure --help" pour les voir. J'espère que vous avez une sauvegarde avant de le faire, au cas où quelque chose ne va pas ...

Robert Martin
la source
Hmm ... Je ne sais pas si je devrais voter pour ça ... Cela répond à la question ... Mais c'est une mauvaise idée et n'explique pas pourquoi ... Alors peut-être que je devrais voter contre?
Arafangion
Excellente réponse, mais en tant que débutant * nix, je suis curieux de savoir pourquoi vous avez choisi ~ pour installer vim. Aussi, que fait cette ligne ./configure ...? Merci encore.
AlexMA
@AlexMA Mettre la source dans ~, c'est- à -dire votre répertoire personnel, est complètement arbitraire. N'hésitez pas à le télécharger où vous le souhaitez. Une fois que vous l'avez installé, vous pouvez également supprimer le répertoire (la source n'est plus nécessaire à ce stade).
Robert Martin
3
Merci beaucoup pour un conseil! J'ai ajusté votre configuration pour le support Python, PERL et Ruby à./configure --prefix /opt/local --enable-perlinterp=yes --enable-pythoninterp=yes --enable-rubyinterp=yes --with-features=huge --with-python-config-dir=/System/Library/Frameworks/Python.framework/Versions/2.7
Ain Tohvri
"Voila! Maintenant, quand nous utiliserons vim, nous utiliserons l'ancien." Je pense que c'est une faute de frappe et vous vouliez dire "nous allons utiliser le nouveau "
skullkid
55

Comme Eric, j'ai utilisé l'homebrew, mais j'ai utilisé la recette par défaut. Alors:

brew install mercurial
brew install vim

Et après avoir redémarré le vim du terminal homebrew devrait être la valeur par défaut. Sinon, vous devez mettre à jour votre $PATHafin que ce /usr/local/binsoit avant /usr/bin. Par exemple, ajoutez ce qui suit à votre .profile:

export PATH=/usr/local/bin:$PATH
Koen.
la source
6
@Beau Ce n'est pas correct, homebrew a une formule pour vim: github.com/mxcl/homebrew/blob/master/Library/Formula/vim.rb
Koen.
Désolé, c'est de ma faute! A brew updatem'a en effet rendu une formule pour vim.
Beau
Correction des viliens symboliques:[sudo] ln -sf /usr/local/bin/vim /usr/bin/vi
knight9631
J'ai ajouté mon vilien symbolique vers /usr/local/bin:ln -s /usr/local/bin/vim /usr/local/bin/vi
wisbucky
"Et après avoir redémarré le vim du terminal homebrew" c'est là que ça m'a soudainement frappé - je dois l'éteindre et le rallumer pour que le nouveau vim fonctionne. Thanks man
Peter Perháč
7

Une note à la réponse de romainl: les alias ne fonctionnent pas avec sudo car seul le premier mot est vérifié sur les alias. Pour changer cela, ajoutez un autre alias à votre .profile / .bashrc:

alias sudo='sudo '

Avec ce changement sudo vimse comportera comme prévu!

Jayeff
la source
6

Sur Yosemite, installez vim en utilisant brewet l' override-system-vioption. Cela installera automatiquement vim avec les fonctionnalités de l' installation «énorme» de vim .

brew install vim --with-override-system-vi

La sortie de cette commande vous montrera où brew a installé vim. Dans ce dossier, descendez dans /bin/vimpour exécuter réellement vim. Voici votre commande pour exécuter vim à partir de n'importe quel dossier:

/usr/local/Cellar/vim/7.4.873/bin/vim

Puis alias cette commande en ajoutant la ligne suivante dans votre .bashrc:

alias vim="/usr/local/Cellar/vim/7.4.873/bin/vim"

EDIT: L'indicateur Brew --override-system-viest obsolète. Changé pour --with-override-system-vi. Source: https://github.com/Shougo/neocomplete.vim/issues/401

Privé
la source
1
comme ça, vous devez mettre à jour l'alias à chaque fois que vous mettez à jour vim. De plus, il n'est pas nécessaire d'ajouter l'emplacement exact en tant qu'alias puisque vim ajoute automatiquement le binaire à / usr / local / bin.
Flaudre
L'indicateur Brew --override-system-viest désormais obsolète. Utilisez --with-override-system-viinsted.
alhuelamo
@ahuelamo Avez-vous une source? Si tel est le cas, n'hésitez pas à éditer et à rechercher. Merci
Privé
@Private Eh bien, cela a été suggéré par Brew lui-même. Vous pouvez également le trouver ici github.com/Shougo/neocomplete.vim/issues/401
alhuelamo
L'ajout de l'alias est redondant lors de l'utilisation de l'indicateur de remplacement.
apostl3pol
1

brew install vim --override-system-vi

Toothrot
la source
1
Ne donne aucune description ou référence quant à la raison pour laquelle cette commande doit être exécutée.
ngfgrant
1

Ce billet de blog m'a été utile. J'ai utilisé la solution "Homebrew built Vim", qui dans mon cas a enregistré la nouvelle version dans / usr / local / bin. À ce stade, le message suggérait de cacher le système vim, ce qui ne fonctionnait pas pour moi, j'ai donc utilisé un alias à la place.

$ brew install vim
$ alias vim='/path/to/new/vim
$ which vim
vim: aliased to /path/to/new/vim
Kkelleey
la source
1
Intéressant. J'ai essayé cela, mais l'infusion a dû remplacer le chemin automatiquement. L'appel vimsemble ouvrir le nouveau vim (après l'ouverture d'un nouveau terminal)
Dylanthepiguy
1
@Dylanthepiguy est d'accord, pas besoin de créer un alias ici si vous utilisez un homebrew. Le démarrage d'un nouveau shell et le ré-approvisionnement de mon bashrc dans le terminal existant ont tous deux fonctionné pour mettre à jour la commande vim vers la nouvelle version homebrew.
kjones
1

Je viens d'installer vim par:

brew install vim

maintenant le nouveau vim est accédé par vimet l'ancien vim (vim intégré) parvi

MIA
la source