vim的一個之處在於廣大vimmer所無私奉獻的外掛程式,令我等不懂vim指令碼的小白受益無窮。在此介紹一些我所安裝的外掛程式和配置,都是針對寫程式的,沒有文本編輯的,也沒有日曆,也不能煮咖啡。
1) A
功能簡單但很有用的一個外掛程式,鍵入:A即可切換標頭檔和源檔案。預設支援C,C++,但不支援objc,對此可修改a.vim,在 a.vim 中加入如下語句:
call <SID>AddAlternateExtensionMapping('m',"h") "Objective-C file
call <SID>AddAlternateExtensionMapping('mm',"h") "Objective-C++ file
2) AutoComplPop
vim中,按 <Ctrl - n> 可彈出自動補全菜單;這個外掛程式則可在鍵入過程中自動彈出自動補全菜單,有時方便有時煩。
3) C
快捷地鍵入一些C,C++ 程式的程式碼片段,常用語句,以及快速注釋。例如,在正常模式或插入模式下,鍵入 \sd 就可輸入do while語句;又如鍵入 \cc 可將選中的文字區塊注釋掉等。
由於 \ 鍵距離較遠,可在 ~/.vimrc 中加入:
let g:C_MapLeader = ','
則將首碼鍵改為英文逗號。
預設的檔案類型也不夠,如要支援 objc,則在 ~/.vimrc 中加入:
let g:C_SourceCodeExtensions = 'c cc cp cxx cpp CPP c++ C i ii m mm'
據說還能直接在vim中調用 GCC,沒試過。
3) Cocoa
Cocoa是iOS開發的官方架構,這個外掛程式則試圖取代XCode的文本編輯功能。
以我的使用經驗,XCode的文本編輯功能是為Objc量身定做的,可定製性差,用來寫 C++ 灰常悲劇,於是寫Objective-C++也就悲劇了,於是就想在vim上寫iOS應用,於是就有了這個外掛程式。
自動補全官方API——這是最重要的功能,因為iOS API的類名,方法名通常很長很長,很長很長……
這個外掛程式有個缺陷——有些功能不支援 .mm 檔案,大約是vim覺得 .mm 檔案不是objc檔案,不知道怎麼解決。
4) echofunc
C,C++的外掛程式,當輸入完函數名,再輸 ( 時,會在狀態列給出函數定義,很有用。依賴於ctags。
5) grep
可在檔案夾範圍內搜尋索引鍵。
6) NerdTree
樹狀的檔案瀏覽視窗,還能設定書籤,比預設的File Explorer要好用。像IDE一樣組織檔案視圖。
筆者在 ~/.vimrc 中的相關設定如下:
let g:NERDTree_title="[NERDTree]"
function! NERDTree_Start()
exec 'NERDTree'
endfunction
function! NERDTree_IsValid()
return 1
endfunction
let NERDChristmasTree=0
let NERDTreeShowBookmarks=1
let NERDTreeShowFiles=1
let NERDTreeShowLineNumbers=1
let NERDTreeMinimalUI=1
let NERDTreeChDirMode=2
7) SnipMate
類似TextMate的代碼片斷功能。
8) SuperTab
在自動補全菜單中,按 <Tab> 來替代 <Ctr - n>,切換。
9) TagList
產生C,C++函數的列表視窗。
在 ~/.vimrc 中的設定如下:
let Tlist_Ctags_Cmd="/usr/local/bin/ctags"
let Tlist_Auto_Open=0
let Tlist_Process_File_Always=1
let Tlist_File_Fold_Auto_Close=1
let Tlist_Sort_Type="name"
let Tlist_WinWidth=30
let Tlist_Compact_Format=1
let Tlist_Enable_Fold_Column=0
let Tlist_Display_Prototype=1
let Tlist_Show_One_File=1
let Tlist_Exit_OnlyWindow=1
let Tlist_Use_Right_Window=1
10) vimball
用來安裝vba格式的vim外掛程式。
11) objc_matchbracket
這個也是Objc的外掛程式。
Objc的視覺特點是中括弧套中括弧,所以書寫時容易搞錯搞漏,很折磨人。Xcode的編輯器能自動補齊中括弧,這個外掛程式也可以。缺點依舊,不支援.mm檔案。不知道怎麼改。
12) OmniCppComplete
寫C++的話,這個外掛程式太有用了,像IDE一樣提示成員函數,資料。依賴於ctags。可以在~/.vimrc中添加下句:
map <F3> :!ctags -R --c++-kinds=+p --fields=+ialS --extra=+q .<CR>
——這樣在vim中按 <F3> 就可以產生tags檔案了。
我的空間裡有~/.vimrc檔案的代碼,怕弄丟了就悲劇了,留著。