Aktualisieren Sie das integrierte vim unter Mac OS X.

112

Ich weiß, dass dies bei Ask Different besser geeignet ist, aber als ich versuchte, dort Tags hinzuzufügen, gab es nur kein vimTag macvim. Also dachte ich mir, ich könnte hier ein besseres Publikum bekommen.

Im Terminal mache ich Folgendes

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

Wenn ich zu http://www.vim.org navigiere, wird eine Nachricht angezeigt

Vim 7.3 veröffentlicht!

Wie aktualisiere ich mein eingebautes vim? Ich würde es sehr gerne sauber machen (dh keine doppelten Installationen oder zusätzliche Downloads, keine Macports usw.)

Ich habe überlegt, Mercurial zu verwenden (da ich es bereits für andere Zwecke verwende), wie in den Anweisungen hier beschrieben .

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

Aber ich denke, das würde eine doppelte Installation ergeben. Trotz meiner oben erwähnten "sauberen" Anforderung sind auch "unreine" Lösungen willkommen, da es vielleicht wirklich keinen anderen Weg gibt.

Kit
quelle
8
Im Allgemeinen denke ich, dass es am besten ist, nicht mit den von Apple installierten Bits herumzuspielen und macports / homebrew / etc. Zu verwenden. oder bauen Sie es selbst und installieren Sie es in /usr/local/. Nicht als würde es viel Platz beanspruchen.
Steveax
github.com/b4winckler/macvim/releases <- Sie können die neuesten Macvim-Schnappschüsse hier herunterladen
lfender6445

Antworten:

119

Überschreiben Sie nicht das eingebaute Vim.

Installieren Sie es stattdessen von der Quelle an einem anderen Speicherort oder über Homebrew oder MacPorts an ihrem Standardspeicherort und fügen Sie diese Zeile Ihrem .bashrc- oder .profile hinzu:

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

und / oder ändern Sie Ihre $PATHso, dass sie ihren Standort vor dem Standardspeicherort überprüft.

Das Beste, was Sie meiner Meinung nach tun können, ist, einfach das neueste MacVim herunterzuladen, das mit einer sehr vollständigen ausführbaren vim-Datei geliefert wird, und es wie folgt in Terminal.app zu verwenden.

alias vim='/Applications/MacVim.app/Contents/MacOS/Vim' # or something like that, YMMV
romainl
quelle
3
Unter Mac OS X 10.8.2 ist der Pfad etwas anders:/Applications/MacVim.app/Contents/MacOS/Vim
Zakangelle
2
Nein, es ist auf jeder Mac OS X-Version gleich. Ich habe gerade einen Tippfehler gemacht. Vielen Dank.
Romainl
@ fabian789: Erstens, weil es nutzlos ist, zwei, weil weich besser als hart ist, drei, weil Standard-Vim funktioniert und wenn etwas schief geht, haben Sie möglicherweise kein funktionierendes Vim mehr, vier, ein System-Upgrade kann Ihr Vim überschreiben und die Liste könnte es wahrscheinlich weiter und weiter ...
Romainl
2
... oder alias vim='mvim -v'. Beides scheitert jedoch an der sudo vimVerwendung der alten Version. Ich würde vorschlagen, die Antwort von @ RobertMartin oder einen Paketmanager zu verwenden. Es gibt noch eine weitere Option: Diese Antwort von Slizzered auf serverfault.com, mit der Sie Aliase an übergeben können sudo.
Brian McCutchon
"Aliase sind Verknüpfungen für eine interaktive Shell. Sie werden von anderen Prozessen nicht verwendet", heißt es in dieser Antwort. stackoverflow.com/questions/37466767/… Daher funktioniert dies beispielsweise nicht für git difftooloder git commit.
Jasonszhao
130

Wenn ich die Dinge richtig verstehe, möchten Sie sie über Ihr vorhandenes Vim installieren, egal ob gut oder schlecht :-) Dies ist eine schlechte Idee und nicht die "saubere" Art, dies zu tun. Warum? Nun, OS X geht davon aus, dass sich in / usr / bin nichts ändern wird, ohne dass dies bekannt ist. Jedes Mal, wenn Sie dort Inhalte überschreiben, besteht die Gefahr, dass Sie eine komplizierte Interdependenz aufheben. Nehmen wir an, Sie brechen etwas - es gibt keine Möglichkeit, diesen Schaden "rückgängig zu machen". Du wirst traurig und allein sein. Möglicherweise müssen Sie OS X neu installieren.

Teil 1: Eine bessere Idee

Die "saubere" Methode besteht darin, an einem separaten Ort zu installieren und der neuen Binärdatei im $ PATH eine höhere Priorität einzuräumen. Hier ist, wie ich das empfehle:

$ # 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! Wenn wir jetzt vim verwenden, werden wir das neue verwenden. Um jedoch bei großen Problemen wieder zu unserer alten Konfiguration zurückzukehren, können wir einfach das Verzeichnis / opt löschen.

$ 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

Sehen Sie, wie sauber das ist.

Ich empfehle, nicht in / usr / local / bin zu installieren, wenn Sie Binärdateien in / usr / bin überschreiben möchten, da OS X / usr / bin standardmäßig in $ PATH eine höhere Priorität als / usr / local / bin hat und mit schraubt das sich öffnet seine eigene Dose Würmer .... Also, das ist , was Sie sollten tun.

Teil 2: Die "richtige" Antwort (aber eine schlechte Idee)

Vorausgesetzt, Sie sind bereit, dies zu tun, sind Sie definitiv auf dem richtigen Weg. Um zusätzlich zu Ihrer aktuellen Installation zu installieren, müssen Sie das Verzeichnis "Präfix" festlegen. Das geht so:

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

Wenn Sie möchten, können Sie auch einige andere Optionen "konfigurieren" übergeben. Führen Sie "./configure --help" aus, um sie anzuzeigen. Ich hoffe, Sie haben ein Backup, bevor Sie es tun, falls etwas schief geht ...

Robert Martin
quelle
Hmm ... Ich weiß nicht, ob ich das positiv bewerten soll ... Es beantwortet die Frage ... Aber es ist eine schlechte Idee und erklärt nicht warum ... Also sollte ich es vielleicht ablehnen?
Arafangion
Tolle Antwort, aber als * nix-Anfänger bin ich gespannt, warum Sie sich für ~ entschieden haben, um vim zu installieren. Was macht diese ./configure ... -Linie? Danke noch einmal.
AlexMA
@AlexMA Das Einfügen der Quelle ~, dh Ihres Home-Verzeichnisses, ist völlig willkürlich. Sie können es jederzeit herunterladen. Sobald Sie es installiert haben, können Sie auch das Verzeichnis löschen (die Quelle ist zu diesem Zeitpunkt nicht mehr erforderlich).
Robert Martin
3
Vielen Dank für einen Tipp! Ich habe Ihre Konfiguration für Python-, PERL- und Ruby-Unterstützung auf./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! Jetzt, wenn wir vim verwenden, werden wir den alten verwenden." Ich denke, dies ist ein Tippfehler und Sie
wollten
55

Wie Eric habe ich Homebrew verwendet, aber ich habe das Standardrezept verwendet. So:

brew install mercurial
brew install vim

Und nach dem Neustart des Terminals sollte Homebrews Vim die Standardeinstellung sein. Wenn nicht, sollten Sie Ihre aktualisieren, $PATHdamit dies /usr/local/binvorher ist /usr/bin. Fügen Sie beispielsweise Folgendes zu Ihrem hinzu .profile:

export PATH=/usr/local/bin:$PATH
Koen.
quelle
6
@Beau Dies ist nicht korrekt, Homebrew hat eine Formel für vim: github.com/mxcl/homebrew/blob/master/Library/Formula/vim.rb
Koen.
Entschuldigung, das war mein Fehler! A brew updatehat mir tatsächlich eine Formel für vim zurückgegeben.
Beau
Fix viSymlinks:[sudo] ln -sf /usr/local/bin/vim /usr/bin/vi
knight9631
Ich fügte meinen viSymlink hinzu zu /usr/local/bin:ln -s /usr/local/bin/vim /usr/local/bin/vi
wisbucky
"Und nachdem ich das Terminal-Vim des Homebrew neu gestartet habe", fiel mir plötzlich auf - ich muss es aus- und wieder einschalten, damit das neue Vim funktioniert. Danke Mann
Peter Perháč
7

Ein Hinweis zu Romainls Antwort: Aliase arbeiten nicht mit sudo zusammen, da nur das erste Wort auf Aliase überprüft wird. Um dies zu ändern, fügen Sie Ihrem .profile / .bashrc einen weiteren Alias ​​hinzu:

alias sudo='sudo '

Mit dieser Änderung sudo vimwird sich wie erwartet verhalten!

Jayeff
quelle
6

Installieren Sie auf Yosemite vim using brewund die override-system-viOption. Dadurch wird vim automatisch mit den Funktionen der 'riesigen' vim- Installation installiert.

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

Die Ausgabe dieses Befehls zeigt Ihnen, wo Brew vim installiert hat. Gehen Sie in diesem Ordner nach unten /bin/vim, um vim auszuführen. Dies ist Ihr Befehl, um vim aus einem beliebigen Ordner auszuführen:

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

Aliasen Sie diesen Befehl dann, indem Sie die folgende Zeile in Ihre .bashrc einfügen:

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

BEARBEITEN: Brauflagge --override-system-viist veraltet. Geändert für --with-override-system-vi. Quelle: https://github.com/Shougo/neocomplete.vim/issues/401

Privat
quelle
1
Auf diese Weise müssen Sie den Alias ​​jedes Mal aktualisieren, wenn Sie vim aktualisieren. Es ist auch nicht erforderlich, den genauen Speicherort als Alias ​​hinzuzufügen, da vim die Binärdatei automatisch zu / usr / local / bin hinzufügt.
Flaudre
Die Braufahne --override-system-viist jetzt veraltet. Verwenden Sie --with-override-system-viinsted.
Alhuelamo
@ahuelamo Hast du eine Quelle? Wenn ja, können Sie diese bearbeiten und beschaffen. Danke
Privat
@Private Nun, das wurde von Brew selbst vorgeschlagen. Sie finden es auch hier github.com/Shougo/neocomplete.vim/issues/401
alhuelamo
Das Hinzufügen des Alias ​​ist redundant, wenn das Override-Flag verwendet wird.
apostl3pol
1

brew install vim --override-system-vi

Zahnrot
quelle
1
Gibt keine Beschreibung oder Referenz an, warum dieser Befehl ausgeführt werden sollte.
Ngfgrant
1

Dieser Blog-Beitrag war hilfreich für mich. Ich habe die "Homebrew Built Vim" -Lösung verwendet, die in meinem Fall die neue Version in / usr / local / bin gespeichert hat. Zu diesem Zeitpunkt schlug der Beitrag vor, das System-Vim auszublenden, was für mich nicht funktionierte. Daher habe ich stattdessen einen Alias ​​verwendet.

$ brew install vim
$ alias vim='/path/to/new/vim
$ which vim
vim: aliased to /path/to/new/vim
kkelleey
quelle
1
Interessant. Ich habe es versucht, aber Brew muss den Pfad automatisch ersetzt haben. Calling vimschien das neue Vim zu öffnen (nachdem ein neues Terminal eröffnet wurde)
Dylanthepiguy
1
@Dylanthepiguy stimmte zu, bei Verwendung von Homebrew muss hier kein Alias ​​erstellt werden. Sowohl beim Starten einer neuen Shell als auch beim erneuten Sourcing meines Bashrc im vorhandenen Terminal wurde der Befehl vim auf die neue Homebrew-Version aktualisiert.
Kjones
1

Ich habe gerade vim installiert von:

brew install vim

Jetzt wird auf das neue vim von vimund auf das alte vim (eingebautes vim) von zugegriffenvi

MIA
quelle