2015-10-24 13 views
8

Sto vedendo qualcosa di molto strano, e onestamente sono perplesso.Vim di Apple sempre usato al posto di homebrew

La versione di vim fornita con mac è obsoleta (7.3 anziché 7.4). Sto provando ad installare vim da homebrew, e voglio usare quello invece della versione Apple predefinita.

Ho eseguito "brew install vim". È stato installato correttamente in /usr/local/bin/vim. Tutto bene.

Quando si esegue "which vim", viene stampato "/usr/local/bin/vim". La versione Apple di vim è installata a /usr/bin/vim. Quindi il comando che mi sta dicendo che sto usando la versione homebrew di vim.

Tuttavia, quando ho effettivamente eseguito vim, che gira ancora la versione

$ vim --version 
VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Jul 9 2015 23:58:42) 
Compiled by [email protected] 
... 

di Apple Se eseguo la versione homebrew in modo esplicito, vedo questo:

$ /usr/local/bin/vim --version 
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Oct 23 2015 18:16:35) 
MacOS X (unix) version 
Included patches: 1-898 
Compiled by Homebrew 
... 

Ho anche provato a spostare /usr/bin/vim a /usr/bin/vim73 per provare a forzare l'uso della versione homebrew. Tuttavia, quando ho fatto questo, ecco cosa vedo quando provo a eseguire vim:

$ vim --version 
-bash: /usr/bin/vim: No such file or directory 
$ 

Cosa sta succedendo? Come posso far funzionare la versione homebrew di vim?

+0

Hai un alias? Usa 'type' invece di' which' per verificare. In bash 'which' non è una shell incorporata, ma' type' è. – janm

+0

L'altro problema ovvio è la tabella hash se non è stata riavviata la shell: 'hash -l' mostra il contenuto della tabella hash in bash. – janm

+0

Ah grazie! Quando digito "type vim", vedo "vim hashed (/ usr/bin/vim)". Quando digito "hash -l", vedo Vim nell'elenco. – kgreenek

risposta

15

avviare una nuova sessione di shell e che funzionerà.

Bash memorizza nella cache i percorsi dei file eseguibili, quindi quando si esegue vim viene visualizzato il numero PATH per trovare il primo file eseguibile con questo nome. Lo memorizza nella cache e la seconda volta che si esegue vim si ricorda che vim è in realtà /usr/bin/vim ed eseguirlo.

Poiché non hai riavviato la tua sessione di Bash, la sua cache è sempre la stessa; quindi l'errore che stai vedendo. Non ha nulla a che fare con il modo in cui hai installato vim.

+0

Questo lo ha risolto per me. Grazie a @bfontaine, tu il vero MVP. – jhliberty

+0

Perfetto. Esattamente quello di cui avevo bisogno per sistemare il mio vim + clipboard su OSX! – Dan

2

avete dimenticato un argomento:

$ brew install vim --override-system-vi 
+0

Questa opzione non esiste. – bfontaine

+0

@bfontaine, sì lo fa: https://github.com/Homebrew/homebrew/blob/master/Library/Formula/vim.rb#L14. Ci scusiamo per l'errore di battitura. – romainl

+0

Non penso che non faccia quello che pensi. '--override-system-vi' rende la formula installa un binario' vi' che è un link simbolico a 'vim'. Tecnicamente non ha la precedenza su nulla; dovremmo probabilmente rinominarlo: https://github.com/Homebrew/homebrew/blob/master/Library/Formula/vim.rb # L99 – bfontaine

Problemi correlati