2015-10-24 44 views
8

Widzę coś bardzo dziwnego, i szczerze mówiąc jestem zaskoczony.Vim jabłkowy zawsze używany zamiast homebrew

Wersja vima dostarczana z mac jest nieaktualna (7,3 zamiast 7,4). Próbuję zainstalować vim z homebrew i chcę użyć tego zamiast domyślnej wersji Apple.

Uruchomiłem "brew install vim". Został poprawnie zainstalowany w /usr/local/bin/vim. Wszystko dobrze.

Po uruchomieniu "which vim", drukuje "/usr/local/bin/vim". Wersja vim firmy Apple jest instalowana pod adresem /usr/bin/vim. Tak więc polecenie mówi mi, że używam wersji vim z homebrew.

Jednak, kiedy rzeczywiście uruchomić vim, to nadal prowadzi Apple wersję

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

Gdybym uruchomić wersję homebrew wyraźnie widzę to:

$ /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 
... 

Próbowałem nawet przeniesienie /usr/bin/vim do /usr/bin/vim73, aby spróbować wymusić użycie wersji homebrew. Jednak kiedy to zrobiłem, oto, co widzę, gdy próbuję uruchomić vim:

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

Co się dzieje? Jak mogę go uruchomić, aby uruchomić homebrew wersję vima?

+0

Czy masz alias? Użyj 'type' zamiast' which' do sprawdzenia. W bash 'which' nie jest wbudowaną powłoką, ale' type' jest. – janm

+0

Innym oczywistym problemem jest tablica asocjacyjna, jeśli nie uruchomiłeś ponownie powłoki: 'hash -l' pokazuje zawartość tabeli mieszania w bashu. – janm

+0

Ah dzięki! Kiedy wpisuję "type vim", widzę "vim jest zakodowany (/ usr/bin/vim)". Kiedy wpisuję "hash -l", widzę vim na liście. – kgreenek

Odpowiedz

15

rozpocząć nową sesję powłoki i będzie ona działać.

Bash buforuje ścieżki plików wykonywalnych, więc po uruchomieniu vim szuka pierwszego pliku wykonywalnego o tej nazwie. Przechowuje go w pamięci podręcznej, a po drugim uruchomieniu vim pamięta, że ​​vim jest w rzeczywistości /usr/bin/vim i uruchamia to.

Ponieważ sesja Bash nie została ponownie uruchomiona, pamięć podręczna jest nadal taka sama; stąd błąd, który widzisz. Nie ma to nic wspólnego ze sposobem instalacji vim.

+0

Rozwiązało to dla mnie. Dzięki @bfontaine - jesteś prawdziwym MVP. – jhliberty

+0

Idealny. Dokładnie to, czego potrzebowałem, aby naprawić mój vim + schowek na OSX! – Dan

2

zapomniałeś argumentu:

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

Ta opcja nie istnieje. – bfontaine

+0

@bfontaine, tak to robi: https://github.com/Homebrew/homebrew/blob/master/Library/Formula/vim.rb#L14. Przepraszam za literówkę. – romainl

+0

Nie sądzę, że nie robi to, co myślisz. '--override-system-vi' sprawia, że ​​formuła instaluje plik binarny' vi', który jest dowiązaniem symbolicznym do 'vim'. Technicznie niczego nie przesłonię; prawdopodobnie powinniśmy zmienić nazwę: https://github.com/Homebrew/homebrew/blob/master/Library/Formula/vim.rb # L99 – bfontaine