Aggiorna vim integrato su Mac OS X


112

So che potrebbe essere più appropriato su Ask Different, ma poiché ho provato ad aggiungere tag lì, non c'era vimsolo tag macvim. Quindi ho pensato che avrei potuto avere un pubblico migliore qui.

Nel terminale, faccio quanto segue

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

Quando navigo su http://www.vim.org , vedo una notizia

Vim 7.3 rilasciato!

Come aggiorno il mio vim integrato? Mi piacerebbe molto farlo in modo pulito (cioè nessuna installazione duplicata o download aggiuntivi, nessun macport, ecc.)

Ho pensato di usare Mercurial (dato che lo uso già per altre cose), come da istruzioni qui .

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

Ma penso che farebbe un'installazione duplicata. Nonostante il mio requisito "pulito" di cui sopra, anche le soluzioni "impure" sono benvenute, poiché forse non c'è davvero altro modo.


8
In generale penso che sia meglio non muck con i bit installati da Apple e usare macports / homebrew / ecc. o crealo da solo e installalo in /usr/local/. Non che occuperà molto spazio.
Steveax

github.com/b4winckler/macvim/releases <- puoi scaricare le ultime istantanee di macvim qui
lfender6445

Risposte:


119

Non sovrascrivere il Vim integrato.

Invece, installalo dalla sorgente in una posizione diversa o tramite Homebrew o MacPorts nella loro posizione predefinita, quindi aggiungi questa riga al tuo .bashrc o .profile:

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

e / o cambia il tuo in $PATHmodo che guardi nella sua posizione prima della posizione predefinita.

La cosa migliore da fare, secondo me, è semplicemente scaricare l'ultimo MacVim che viene fornito con un eseguibile vim molto completo e usarlo in Terminal.app in questo modo.

alias vim='/Applications/MacVim.app/Contents/MacOS/Vim' # or something like that, YMMV

3
Su Mac OS X 10.8.2, il percorso è leggermente diverso:/Applications/MacVim.app/Contents/MacOS/Vim
zakangelle

2
No, è lo stesso su tutte le versioni di Mac OS X. Ho appena fatto un errore di battitura. Grazie.
romainl

@ fabian789: Primo perché è inutile, due perché soft è meglio che hard, tre perché Vim predefinito funziona e se qualcosa va storto potresti benissimo non avere più un Vim funzionante, quattro un aggiornamento del sistema potrebbe sovrascrivere il tuo Vim e l'elenco potrebbe probabilmente vai avanti e avanti ...
romainl

2
... o alias vim='mvim -v'. Ma entrambi falliscono con l' sudo vimutilizzo della vecchia versione. Suggerirei di utilizzare la risposta di @ RobertMartin o un gestore di pacchetti. C'è anche un'altra opzione: questa risposta di Slizzered su serverfault.com, che ti consente di passare gli alias a sudo.
Brian McCutchon

"Gli alias sono scorciatoie per una shell interattiva; non vengono utilizzati da altri processi", dice questa risposta. stackoverflow.com/questions/37466767/… Pertanto, questo non funziona per, diciamo git difftoolo git commit.
jasonszhao

130

Se ho capito bene le cose, vuoi installare sul tuo Vim esistente, nel bene e nel male :-) Questa è una cattiva idea e non è il modo "pulito" per farlo. Perché? Bene, OS X si aspetta che nulla cambierà mai in / usr / bin a sua insaputa, quindi ogni volta che sovrascrivi delle cose lì dentro rischi di rompere qualche intricata interdipendenza. E, diciamo che rompi qualcosa - non c'è modo di "annullare" quel danno. Sarai triste e solo. Potrebbe essere necessario reinstallare OS X.

Parte 1: un'idea migliore

Il modo "pulito" consiste nell'installare in un luogo separato e dare al nuovo binario una priorità più alta nel $ PATH. Ecco come ti consiglio di farlo:

$ # 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

Ecco! Ora quando useremo vim useremo quello nuovo. Ma, per tornare alla nostra vecchia configurazione in caso di enormi f * ckup, possiamo semplicemente eliminare la directory / 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

Guarda quanto è pulito.

Consiglio di non installare in / usr / local / bin quando si desidera sovrascrivere i binari in / usr / bin, perché per impostazione predefinita OS X mette / usr / bin una priorità più alta in $ PATH rispetto a / usr / local / bin e avvita con che apre la sua lattina di vermi ... Quindi, questo è quello che DOVRESTI fare.

Parte 2: la risposta "corretta" (ma una cattiva idea)

Supponendo che tu sia deciso a farlo, sei decisamente sulla buona strada. Per eseguire l'installazione in aggiunta all'installazione corrente, è necessario impostare la directory "prefix". È fatto così:

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

Puoi passare a "configura" anche alcune altre opzioni, se lo desideri. Fai "./configure --help" per vederli. Spero che tu abbia un backup prima di farlo, però, nel caso qualcosa vada storto ...


Hmm ... Non so se dovrei votare a favore ... Risponde alla domanda ... Ma è una cattiva idea e non spiega perché ... Quindi forse dovrei votare?
Arafangion

Ottima risposta, ma come principiante * nix sono curioso di sapere perché hai scelto ~ per installare vim. Inoltre, cosa fa quella riga ./configure ...? Grazie ancora.
AlexMA

@AlexMA Mettere il sorgente ~, cioè la tua home directory, è completamente arbitrario. Sentiti libero di scaricarlo dove vuoi. Una volta installato, puoi anche eliminare la directory (la fonte non è più necessaria a quel punto).
Robert Martin

3
Grazie mille per un suggerimento! Ho ./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
adattato la

"Voilà! Ora quando useremo vim useremo quello vecchio." Penso che questo sia un errore di battitura e volevi dire "useremo quello nuovo "
skullkid

55

Come Eric, ho usato homebrew, ma ho usato la ricetta predefinita. Così:

brew install mercurial
brew install vim

E dopo aver riavviato il vim del terminale homebrew dovrebbe essere l'impostazione predefinita. In caso contrario, dovresti aggiornare il tuo in $PATHmodo che /usr/local/binsia prima /usr/bin. Ad esempio, aggiungi quanto segue al tuo .profile:

export PATH=/usr/local/bin:$PATH

6
@Beau Questo non è corretto, homebrew ha una formula per vim: github.com/mxcl/homebrew/blob/master/Library/Formula/vim.rb
Koen.

Scusa, colpa mia! A brew updatemi ha davvero restituito una formula per vim.
Beau

Fix vilink simbolici:[sudo] ln -sf /usr/local/bin/vim /usr/bin/vi
knight9631

Ho aggiunto il mio vi/usr/local/binln -s /usr/local/bin/vim /usr/local/bin/vi
collegamento

"E dopo aver riavviato il terminale homebrew's vim" è stato allora che improvvisamente mi ha colpito: ho bisogno di spegnerlo e riaccenderlo per far funzionare il nuovo vim. Grazie amico
Peter Perháč

7

Una nota alla risposta di romainl: gli alias non funzionano insieme a sudo perché solo la prima parola viene controllata sugli alias. Per cambiare questo aggiungi un altro alias al tuo .profile / .bashrc:

alias sudo='sudo '

Con questa modifica sudo vimsi comporterà come previsto!


6

Su Yosemite, installa vim usando brewe l' override-system-viopzione. Questo installerà automaticamente vim con le caratteristiche dell'installazione "enorme" di vim .

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

L'output di questo comando ti mostrerà dove brew ha installato vim. In quella cartella, vai in basso /bin/vimper eseguire effettivamente vim. Questo è il tuo comando per eseguire vim da qualsiasi cartella:

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

Quindi alias questo comando aggiungendo la seguente riga nel tuo .bashrc:

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

EDIT: Brew flag --override-system-viè stato deprecato. Cambiato per --with-override-system-vi. Fonte: https://github.com/Shougo/neocomplete.vim/issues/401


1
in questo modo devi aggiornare l'alias ogni volta che aggiorni vim. Inoltre, non è necessario aggiungere la posizione esatta come alias poiché vim aggiunge automaticamente il binario a / usr / local / bin.
Flaudre

Il flag Brew --override-system-viè ora deprecato. Usa --with-override-system-viinvece.
alhuelamo

@ahuelamo Hai una fonte? In tal caso, sentiti libero di modificare e fonte. Grazie
Privato

@Private Bene, questo è stato suggerito dalla stessa birra. Puoi trovarlo anche qui github.com/Shougo/neocomplete.vim/issues/401
alhuelamo

L'aggiunta dell'alias è ridondante quando si utilizza il flag di override.
apostl3pol

1

brew install vim --override-system-vi


1
Non fornisce alcuna descrizione o riferimento sul motivo per cui questo comando dovrebbe essere eseguito.
ngfgrant

1

Questo post sul blog è stato utile per me. Ho usato la soluzione "Homebrew built Vim", che nel mio caso ha salvato la nuova versione in / usr / local / bin. A questo punto, il post ha suggerito di nascondere il sistema vim, che non ha funzionato per me, quindi ho usato invece un alias.

$ brew install vim
$ alias vim='/path/to/new/vim
$ which vim
vim: aliased to /path/to/new/vim

1
Interessante. Ho provato questo ma brew deve aver sostituito automaticamente il percorso. La chiamata vimsembrava aprire il nuovo vim (dopo aver aperto un nuovo terminale)
Dylanthepiguy

1
@Dylanthepiguy ha accettato, non è necessario creare un alias qui se si utilizza homebrew. Sia l'avvio di una nuova shell che il re-sourcing del mio bashrc nel terminale esistente hanno entrambi funzionato per aggiornare il comando vim alla nuova versione homebrew.
kjones

1

Ho appena installato vim da:

brew install vim

ora si accede al nuovo vim da vime al vecchio vim (built-in vim) davi

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.