十個必用的 Vim Plugin

http://www.openfoundry.org/en/tech-article/2244

新建~/.vimrc

(系统默认也有一个/etc/vimrc)

 

vimrc配置如下(为简单起见,采取注释的方式直接说明):1

 

if(has("win32") || has("win95") || has("win64") || has("win16")) "判定当前操作系统类型
 let g:iswindows=1
else
 let g:iswindows=0
endif
set nocompatible "不要vim模仿vi模式,建议设置,否则会有很多不兼容的问题
syntax on"打开高亮
if has("autocmd")
 filetype plugin indent on "根据文件进行缩进
 augroup vimrcEx
 au!
 autocmd FileType text setlocal textwidth=78
 autocmd BufReadPost *
 / if line("'/"") > 1 && line("'/"") <= line("$") |
 / exe "normal! g`/"" |
 / endif
 augroup END
else
 "智能缩进,相应的有cindent,官方说autoindent可以支持各种文件的缩进,但是效果会比只支持C/C++的cindent效果会差一点,但笔者并没有看出来
 set autoindent " always set autoindenting on 
endif " has("autocmd")
set tabstop=4 "让一个tab等于4个空格
set vb t_vb=
set nowrap "不自动换行
set hlsearch "高亮显示结果
set incsearch "在输入要搜索的文字时,vim会实时匹配
set backspace=indent,eol,start whichwrap+=<,>,[,] "允许退格键的使用
if(g:iswindows==1) "允许鼠标的使用
 "防止linux终端下无法拷贝
 if has('mouse')
 set mouse=a
 endif
 au GUIEnter * simalt ~x
endif
"字体的设置
set guifont=Bitstream_Vera_Sans_Mono:h9:cANSI "记住空格用下划线代替哦
set gfw=幼圆:h10:cGB2312




OK,有了上面的基本设置,一个好用的vim就配置好了,但是如果想让它完美支持各种源代码文件,想让它方便的注释,方便的进行代码提示,方便的添加用户信息,那还差的很远哦,

 

 


将这些插件(*.vim)拷贝到~/.vim/plugin目录(如果没有这个目录,自己建就可以)就可以使用。不过我将插件拷贝到~/.vim/plugin目录后仍然无法使用这些插件。后来发现是这些插件文件的权限有问题。我用的是自己的账户登陆,而那些文件的owner是root。导致运行Gvim后无法打开那些插件。解决办法,用root登陆,鼠标选中插件单击右键-->propertes-->permission 把那些插件的owner改成正确的账户。

 


 下面一个个的讲解配置:

首先确认安装了ctags和cscope,并且确认这两个可执行程序所在的目录已经放进环境变量里面。(必须做,否则后边都无法操作)

在vimrc中配置如下:

 

map <F12> :call Do_CsTag()<CR>
nmap <C-@>s :cs find s <C-R>=expand("<cword>")<CR><CR>:copen<CR>
nmap <C-@>g :cs find g <C-R>=expand("<cword>")<CR><CR>
nmap <C-@>c :cs find c <C-R>=expand("<cword>")<CR><CR>:copen<CR>
nmap <C-@>t :cs find t <C-R>=expand("<cword>")<CR><CR>:copen<CR>
nmap <C-@>e :cs find e <C-R>=expand("<cword>")<CR><CR>:copen<CR>
nmap <C-@>f :cs find f <C-R>=expand("<cfile>")<CR><CR>:copen<CR>
nmap <C-@>i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR>:copen<CR>
nmap <C-@>d :cs find d <C-R>=expand("<cword>")<CR><CR>:copen<CR>
function Do_CsTag()
 let dir = getcwd()
 if filereadable("tags")
 if(g:iswindows==1)
 let tagsdeleted=delete(dir."//"."tags")
 else
 let tagsdeleted=delete("./"."tags")
 endif
 if(tagsdeleted!=0)
 echohl WarningMsg | echo "Fail to do tags! I cannot delete the tags" | echohl None
 return
 endif
 endif
 if has("cscope")
 silent! execute "cs kill -1"
 endif
 if filereadable("cscope.files")
 if(g:iswindows==1)
 let csfilesdeleted=delete(dir."//"."cscope.files")
 else
 let csfilesdeleted=delete("./"."cscope.files")
 endif
 if(csfilesdeleted!=0)
 echohl WarningMsg | echo "Fail to do cscope! I cannot delete the cscope.files" | echohl None
 return
 endif
 endif
 if filereadable("cscope.out")
 if(g:iswindows==1)
 let csoutdeleted=delete(dir."//"."cscope.out")
 else
 let csoutdeleted=delete("./"."cscope.out")
 endif
 if(csoutdeleted!=0)
 echohl WarningMsg | echo "Fail to do cscope! I cannot delete the cscope.out" | echohl None
 return
 endif
 endif
 if(executable('ctags'))
 "silent! execute "!ctags -R --c-types=+p --fields=+S *"
 silent! execute "!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q ."
 endif
 if(executable('cscope') && has("cscope") )
 if(g:iswindows!=1)
 silent! execute "!find . -name '*.h' -o -name '*.c' -o -name '*.cpp' -o -name '*.java' -o -name '*.cs' > cscope.files"
 else
 silent! execute "!dir /s/b *.c,*.cpp,*.h,*.java,*.cs >> cscope.files"
 endif
 silent! execute "!cscope -b"
 execute "normal :"
 if filereadable("cscope.out")
 execute "cs add cscope.out"
 endif
 endif
endfunction


1)taglist.vim


把taglist.vim放在plugin目录下后,在vimrc中添加如下的配置:

1
"进行Tlist的设置
"TlistUpdate可以更新tags
map <F3> :silent! Tlist<CR> "按下F3就可以呼出了
let Tlist_Ctags_Cmd='ctags' "因为我们放在环境变量里,所以可以直接执行
let Tlist_Use_Right_Window=1 "让窗口显示在右边,0的话就是显示在左边
let Tlist_Show_One_File=0 "让taglist可以同时展示多个文件的函数列表,如果想只有1个,设置为1
let Tlist_File_Fold_Auto_Close=1 "非当前文件,函数列表折叠隐藏
let Tlist_Exit_OnlyWindow=1 "当taglist是最后一个分割窗口时,自动推出vim
"是否一直处理tags.1:处理;0:不处理
let Tlist_Process_File_Always=0 "不是一直实时更新tags,因为没有必要
let Tlist_Inc_Winwidth=0



这个插件实现了按下fd,就可以提示当前光标所在函数的定义,另外还实现了当输入'('时,会自动匹配tags,展示函数的定义原型。

只需要把这个插件放到plugin下就行,不需要配置。

 

 

 

 

4)NERD_commenter.vim 注释插件 下载插件

也是程序员非常实用的一款插件,支持各种语言的补全,只要你能想到的,放心他绝对注释的了,而且还支持单行注释,批量注释,等各种命令映射,在这里,我把最常用的键映射在vimrc中配置了一下。

1
2
3
4 "对NERD_commenter的设置
let NERDShutUp=1
"支持单行和多行的选择,//格式
map <c-h> ,c<space>



这样的话,在光标所在行上,按下一次ctrl+h是注释,再按下一次是取消注释。

而其内建的指令,cm是多行注释,类似C++的/**/,,cu是取消注释。

5)DoxygenToolkit.vim 由注释生成文档,并且能够快速生成函数标准注释 下载地址

这个插件使得vim能够生成标准的函数注释,如图:

map fg : Dox<cr>
let g:DoxygenToolkit_authorName="dantezhu"
let g:DoxygenToolkit_licenseTag="My own license/<enter>"
let g:DoxygenToolkit_undocTag="DOXIGEN_SKIP_BLOCK"
let g:DoxygenToolkit_briefTag_pre = "@brief/t"
let g:DoxygenToolkit_paramTag_pre = "@param/t"
let g:DoxygenToolkit_returnTag = "@return/t"
let g:DoxygenToolkit_briefTag_funcName = "no"
let g:DoxygenToolkit_maxFunctionProtoLines = 30



读者可以需要将 DoxygenToolkit_authorName设置成为自己的名字,OK,这样标准格式的代码注释就出来啦。

 

vim的代码自动补全
2007-08-04 20:58突然发现vim有代码自动补全功能,很是强大,基本和IDE的功能差不多了。
要实现代码自动补全功能,我们需要一些插件,我使用的插件有:
javacomplete.vim
htmlcomplete.vim
csscomplete.vim
xmlcomplete.vim
pythoncomplete.vim
rubycomplete.vim
javascriptcomplete.vim
实际上在$VIMRUNTIME/autoload下已经有不少这样的插件了,我们只需要下载没有的就行了。
把这些插件放到$VIMRUNTIME/autoload后,还需要配置下~/.vim/vimrc,加上:

autocmd FileType ruby,eruby set omnifunc=rubycomplete#Complete
autocmd FileType python set omnifunc=pythoncomplete#Complete
autocmd FileType javascript set omnifunc=javascriptcomplete#CompleteJS
autocmd FileType html set omnifunc=htmlcomplete#CompleteTags
autocmd FileType css set omnifunc=csscomplete#CompleteCSS
autocmd FileType xml set omnifunc=xmlcomplete#CompleteTags
autocmd FileType java set omnifunc=javacomplete#Complete


于是我们在编辑相应的文件的时候,按下C-X C-O就能唤出自动补全的窗口了

 

 

 

 

 

 

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6