教你用NeoBundle管理Vim外掛

發表於2014-07-22

NeoBundle 是一個 Vim 的外掛管理器,以 Vundle 為基礎(Vundle 是一個基於 Pathogen 的 Vim 外掛管理器)。在之前的文章中,我非常不推薦使用 Neobundle,原因是它當時還處於高速開發階段(LCTT:意味著不穩定、變數大),並且當時它的英文文件很少。現在,已經過了一年多了,這兩個問題都早已不再是問題。

我們為什麼要使用外掛管理器?Vim 支援大量外掛,但是由於它沒有嚴格定義框架,外掛的檔案可以胡亂分佈在不同目錄下,導致使用者管理起來會很困難(LCTT:當然,前提是你有很多外掛,還有點小小的強迫症,覺得理一理這些外掛心裡會舒服點)。而一款外掛管理器能讓管理變得簡單許多。Pathogen, Vundle 和 NeoBundle 的工作就是為不同外掛建立一個目錄,然後將這些目錄扔到 ~/.vim/bundle 目錄下。這個檔案整理方法可以讓你方便徹底地刪除外掛,使用 ‘rm -rf <外掛目錄>’ 或直接在檔案管理器裡面把外掛所在的目錄刪除就可以了,絕對綠色環保無殘留。同時,這種方法還能最大程度避免外掛與外掛之間的不相容性。

eoBundle 是一個基於 Vundle 的專案,如同 Vundle,它們都可以安裝和升級外掛。然而 NeoBundle 的說明檔案上明確指出:“NeoBundle 不是一個穩定的外掛管理器,如果你想要一個穩定的,請選擇 Vundle”。最新的 release-note 上也有警告“可能會造成相容性問題”——這是一個開發者寫的註解,說明這個管理器還不能讓人放心使用。

所以,我們為什麼要使用 NeoBundle?它都不能保證穩定執行!好吧,它還是有可取之處的。Vundle 只支援 Git 這種版本控制系統,而 NeoBundle 可以支援 Subversion 和 Mercurial。另一個原因是如果你不想外掛升級時破壞你的 Vim 生態環境,你可以鎖住 NeoBundle,讓它只使用某個外掛的固定版本。

另外,NeoBundle 建立者,Shougo Matsuishita(LCTT:名字看著像日本人),正在將它的命令介面新增到其他外掛專案,以便減少他們的命令使用量。現在 NeoBundle 支援3種外掛:unite.vim,Vim 使用的檔案和快取管理器;vimshell.vim,Vim 使用的指令碼程式;vimproc.vim,執行於 vimshell.vim 中,用於對非同步事件的支援。上面說的都是特殊案例,缺少英文文件,所以使用者希望有人能完善它們。在正式使用它們之前,我們需要把注意力先集中在一些基本操作上。

安裝並初始化 NeoBundle

NeoBundle 支援 Vim 7.2.051 或更高版本,需要 git 和 cURL(用於下載檔案)。你可以手動下載 NeoBundle,也可以使用 cURL 下載它在 GitHub 上的庫。在你的 home 目錄下使用如下命令,可以將 NeoBundle 外掛下載到 .vim/bundle/neobundle.vim 目錄裡,然後 NeoBundle 就能管理它自己了。

你還需要修改 .vimrc 檔案。NeoBundle 的 GitHub 主頁提供一個 .vimrc 範本,但是直接使用這個範本,NeoBundle 需要你安裝5個可能不需要外掛。如果不需要它們,你可以使用下面的最小配置:

上述配置的作用是:啟動 NeoBundle 並且像其他外掛一樣升級自己。NeoBundle 預設從 GitHub 下載並升級,如果你正好在使用 GitHub,你只需要為這個外掛指定維護者的使用者名稱和路徑。在上面的配置中,NeoBundleFetch 只需要指定為“Shougo/neobundle.vim”,而不是完整的 GitHub 路徑。如果你想使用其他網站,比如是 Subversion 或 Mecurial 的網站,你就需要新增完整的 URL。

如果你想安裝其他外掛,你可以使用下面的命令:

舉個例子:你想安裝 vim-abolish,一個超級 NB 的文字搜尋和替換外掛,就使用下面的命令:

如果要讓它自動升級,在 NeoBundleFetch 那行下面新增一行:

再介紹一個小技巧:你可以為外掛指定一個分支或版本號。什麼意思?NeoBundle 只會使用這個外掛的某個分支或版本,而忽略其版本更新。如果你使用的某個外掛處於高速開發過程,你就可以使用這個技巧,避免用到有 bug 的外掛版本。舉個例子:

還有一個技巧:在 .vimtc 檔案內新增一行關於“NeoBundleCheck”的屬性。NeoBundle 會根據配置檢查沒安裝的外掛,並提示你安裝它們。你也可以使用命令“:NeoBundleInstall”(LCTT:這是要在 Vim 編輯器的命令模式下輸入)來安裝或升級外掛。

NeoBundle 用法

很多 NeoBundle 命令用起來和 Vundle 類似,但命令的名字不一樣。下面是 NeoBundle 命令的用法:

  • :NeoBundleUpdate:安裝或升級外掛,如果你手動把一個外掛的目錄刪除了,這個命令會重新安裝這個外掛。在這個命令後面加上外掛名稱,就只升級一個外掛;不加引數,會將所有己安裝但沒被記錄在案的外掛給記錄下來。:NeoBundleInstall 命令效果相同。
  • :NeoBundle {REPOSITORY URI} [[REVISION}] [,OPTIONS}]]:將一個外掛鎖定到固定版本,防止胡亂升級。
  • :NeoBundleList:列出所有未初始化的外掛。
  • :NeoBundleClean:進入互動介面,刪除外掛。

這些命令在配合 unite.vim (LCTT:就是上面舉過的32個例子之一)使用時,效果會稍微有些出入。你可以使用“:help neobundle”命令瞭解更多資訊。

是否使用 NeoBundle,自己決定

NeoBundle 是強大的工具,正處於高速開發狀態。任何處於這種狀態的專案,都會被帖上“有前途”和“不穩定”兩個標籤,看你自己怎麼選。如果你想要最新的穩定版本的外掛,NeoBundle 能夠把 Vundle 和 Pathogen 甩出幾條街。

然而線上幫助文件已經給出警告,它不是個穩定的產品,不及時更新版本可能造成一些外掛執行出錯。最後,你需要在 .vimrc 檔案為你的 Neoundle 和其他外掛指定一個穩定的版本。記住這警告,然後你可以在使用這些尖端技術產品時遊刃有餘。

相關文章