Vundle, Bundler for Vim

Vim 雖然本身功能就很強大,但是要讓它好用,支援更多的功能,那不可缺少的就是安裝外掛 (plugin) 了,不過 Vim 的外掛安裝和尋找本身對新手來說就是一道不小的門檻,Vim 自己的網站雖然有 scripts 這塊讓人上傳外掛的地方,不過基本上不太好用,所以有些開發者不會把東西丟到這,取而代之的,這幾年最主流的方式反而是用 github 來放 Vim 外掛,然後配上 pathogen 來安裝和管理,不但讓外掛安裝時互相不干擾,用 git 管理的外掛也可以直接更新,要反安裝也不用怕不乾淨,和以前壓縮檔、Vimball 時期比起來真的是好太多了。

gmarik 受到 pathogen 和 Ruby 的 bundler 的啟發,開發了 Vundle 這個 Vim 外掛,除了可以像 pathogen 那樣把外掛分到不同目錄管理,更厲害的是你可以很簡單的新增要安裝的外掛,然後透過指令簡單的安裝和更新。

set rtp+=~/.vim/bundle/vundle/
call vundle#rc()

" let Vundle manage Vundle
Bundle 'gmarik/vundle'

Bundle 'YankRing.vim'
Bundle 'VisIncr'
Bundle 'scrooloose/nerdcommenter'
Bundle 'scrooloose/nerdtree'
Bundle 'tpope/vim-surround'
Bundle 'Align'
Bundle 'othree/eregex.vim'
Bundle 'mru.vim'
Bundle 'sjl/gundo.vim'

filetype plugin indent on

節錄一段我現在的 .vimrc 設定,要新增外掛,就只要加上一行,然後進入 Vim 執行:BundleInstall,如果要更新就是:BundleInstall!,非常簡單,Bundle 支援的參數有三種,第一種是直接一個普通字串,會去找 Vim Script 裡面的外掛,第二種是中間有個/的,前面是 github 帳號,後面則是他的 Vim 外掛專案路徑,其實也就是 github 專案頁面路徑的後面那段,第三種就是 git repository 的位置了,基本上這樣就很夠用了,如果有遇到外掛沒有上述三種地方可以裝,或是想要自己修改的話怎麼辦?

舉例來說, jslint.vim 我就自己改成用 Douglas Crockford 的 JSLint repo 下的最新版 jslint.js ,這種情形,我會自己 fork 一份 jslint.vim 下來修改,然後安裝就裝自己的那份。使用 Vundle 之後,把 plugin 裝回來的過程比以前要簡單上數百倍,所以只要備份 .vimrc 就可以了,整個 目錄 看起來清爽太多了。