2015-10-24 14 views
8

我看到一些很奇怪的東西,老實說我很難過。蘋果的vim總是用來代替自制軟件

mac自帶的vim版本過時(7.3而不是7.4)。我正在嘗試從homebrew安裝vim,並且我想使用那個而不是默認的蘋果版本。我運行了「brew install vim」。它正確安裝在/usr/local/bin/vim。都好。

當我運行「which vim」時,它打印「/usr/local/bin/vim」。蘋果版本的vim安裝在/usr/bin/vim。所以,哪個命令告訴我,我正在使用vim的homebrew版本。

然而,當我實際運行的vim,它仍然運行在蘋果版本

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

如果我明確地運行自制軟件的版本,我看到:

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

我甚至嘗試移動/usr/bin/vim/usr/bin/vim73嘗試強制使用自制軟件版本。但是,當我這樣做時,以下是我嘗試運行vim時看到的內容:

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

這是怎麼回事?我怎樣才能讓它運行vim的自制版本?

+0

你有別名嗎?使用'type'而不是'which'來檢查。在bash中'which'不是shell內建的,但'type'是。 – janm

+0

另一個明顯的問題是如果你沒有重新啓動你的shell,散列表:'hash -l'顯示在bash中散列表的內容。 – janm

+0

啊謝謝!當我輸入「type vim」時,我看到「vim被哈希(/ usr/bin/vim)」。當我輸入「hash -l」時,我在列表中看到vim。 – kgreenek

回答

15

啓動一個新的shell會話,它會工作。

猛砸緩存可執行文件的路徑,所以當你運行vim它看起來你PATH找到與此名稱的第一個可執行文件。它緩存它,第二次運行vim它記得vim實際上是/usr/bin/vim並運行它。

既然你還沒有重新啓動你的Bash會話,它的緩存仍然是一樣的;因此你看到的錯誤。它與您安裝vim的方式無關。

+0

這解決了它對我來說。感謝@bfontaine - 你是真正的MVP。 – jhliberty

+0

完美。正是我需要在OSX上修復我的vim +剪貼板! – Dan

2

你忘了一個參數:

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

該選項不存在。 – bfontaine

+0

@bfontaine,是的:https://github.com/Homebrew/homebrew/blob/master/Library/Formula/vim.rb#L14。對不起,錯字。 – romainl

+0

我不認爲它不會做你的想法。 '--override-system-vi'使公式安裝一個'vi'二進制文件,它是'vim'的符號鏈接。從技術上講,它不覆蓋任何東西;我們應該重新命名它:https://github.com/Homebrew/homebrew/blob/master/Library/Formula/vim。rb#L99 – bfontaine