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文件的代码,怕弄丢了就悲剧了,留着。