Vim是一个强大的文本编辑器,我参考网上教程定制了一个简单的IDE,具有文件视图、自动补全、批量注释等常用功能。先上图:
要完成整个配置,需要安装ctags、cscope软件,以及taglist.vim、winmanage、omnicppcomplete.vim、NERDcommenter.vim、a.vim、DoxygenToolKit插件。
有了这些基本功能,Vim俨然成了一个简化版的SourceInsight。
以后只需要按F3就可以打开/关闭代码结构视图。
去主页下载压缩包,压缩后会得到after、autoload、doc三个目录,移动到$HOME/.vim目录下。同样要进入doc目录,打开Vim运行":helptags ."。
然后需要在.vimrc添加:
输入->和.会自动弹出结构体成员的下拉列表。如果想补全局部变量可以配合使用ctrl+N和+P。
去官网下载压缩包,解压后会有plugin、doc目录,老规矩放到$HOME/.vim下面。进入doc目录,打开Vim运行":helptags ."。然后在.vimrc下添加:
这样只需按下“,+c+空格”就能注释本行,或者先输入数字N,再按“,+c+空格”就能注释N行。
官网下载,得到a.vim文件,直接放到$HOME/.vim/plugin目录,无需任何配置。打开一个.c文件,运行命令“:A”就能立刻切换到对应的.h文件;运行“:AV”就能分屏显示.c和.h文件。
下载。使用Dox、DoxAuthor、DoxLic命令,可以在光标位置分别创建函数注释、作者注释、licence注释。注释的内容是可配置的,如:
9.参考资料
要完成整个配置,需要安装ctags、cscope软件,以及taglist.vim、winmanage、omnicppcomplete.vim、NERDcommenter.vim、a.vim、DoxygenToolKit插件。
- ctags软件可以帮助我们跳转到函数或者变量的定义位置;
- cscope软件比ctags更强大,可以找到哪些位置调用了某个函数;
- taglist.vim和winmanage插件用于显示源代码的结构,比如函数列表;
- omnicppcomplete.vim插件可以实现C/CPP代码的补全;
- NERD_commenter.vim可以实现批量注释;
- a.vim实现.cpp和.h的快速切换,比如敲代码时想立刻查看头文件;
- DoxygenToolKit插件用于自动产生注释。
有了这些基本功能,Vim俨然成了一个简化版的SourceInsight。
1. 配置.vimrc
.vimrc是Vim的配置文件,就在$HOME目录下面,如果没有就自己创建一个。在这个文件里可以深度定制Vim。不要太复杂,先配上最基本的,代码如下:
set nocompatible "不要兼容vi syntax on "高亮 set tabstop=4 "tab等于4空格 set hlsearch "搜索高亮 set incsearch "搜索实时更新 set cindent "自动缩进 set nu "显示行号 filetype plugin on "a.vim插件需要这个
2.如何安装插件
Vim安装插件离奇地简单,在$HOME目录下建一个.vim目录,以后的插件都往这里放。
3.ctags和cscope
ubuntu的用户直接使用
sudo apt-get install ctagssudo apt-get install cscope
然后为更方便使用ctags和cscope,我们需要配置一下.vimrc。
"configure ctags and cscopeautocmd BufEnter * lcd %:p:hmap <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") let tagsdeleted=delete("./"."tags") 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") let csfilesdeleted=delete("./"."cscope.files") 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") 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") ) silent! execute "!find `pwd .` -name '*.h' -o -name '*.c' -o -name '*.cpp' -o -name '*.java' -o -name '*.cs' > cscope.files" silent! execute "!cscope -b" execute "normal :" if filereadable("cscope.out") execute "cs add cscope.out" endif endifendfunction
这里最重要的就是将F12映射为Do_CsTag函数,当文件被修改了,只需要按一次F12就会更新tags和cscope.out。
4.taglist.vim、winmanage
下载taglist.vim、winmanage,解压缩后,会得到两个子目录:plugin、doc。将这两个目录移动到$HOME/.vim目录下,然后进入doc目录,打开Vim运行":helptags ."(这条命令会用到很多次,也可以把所有插件安装完成后,一次性运行)。
然后我们需要为.vimrc添加:
"configure tlistlet g:winManagerWindowLayout='FileExplorer|TagList' nmap <F3>:WMToggle<CR>let Tlist_Ctags_Cmd='ctags' "因为我们放在环境变量里,所以可以直接执行let Tlist_Use_Right_Window=0 "让窗口显示在右边,0的话就是显示在左边let Tlist_Show_One_File=0 "让taglist可以同时展示多个文件的函数列表,如果想只有1个,设置为1let Tlist_File_Fold_Auto_Close=1 "非当前文件,函数列表折叠隐藏let Tlist_Exit_OnlyWindow=1 "当taglist是最后一个分割窗口时,自动推出vimlet Tlist_Process_File_Always=0 "是否一直处理tags.1:处理;0:不处理。不是一直实时更新tags,因为没有必要let Tlist_Inc_Winwidth=0
以后只需要按F3就可以打开/关闭代码结构视图。
5.omnicppcomplete.vim
去主页下载压缩包,压缩后会得到after、autoload、doc三个目录,移动到$HOME/.vim目录下。同样要进入doc目录,打开Vim运行":helptags ."。
然后需要在.vimrc添加:
"configure omnicppcompleteset completeopt=menu:inoremap ( ()<ESC>i:inoremap ) <c-r>=ClosePair(')')<CR>:inoremap { {}<ESC>i:inoremap } <c-r>=ClosePair('}')<CR>:inoremap [ []<ESC>i:inoremap ] <c-r>=ClosePair(']')<CR>:inoremap < <><ESC>i:inoremap > <c-r>=ClosePair('>')<CR>:inoremap " ""<ESC>i:inoremap ' ''<ESC>ifunction ClosePair(char) if getline('.')[col('.') - 1] == a:char return "<Right>" else return a:charendifendf
输入->和.会自动弹出结构体成员的下拉列表。如果想补全局部变量可以配合使用ctrl+N和+P。
6.Nerd_commenter.vim
去官网下载压缩包,解压后会有plugin、doc目录,老规矩放到$HOME/.vim下面。进入doc目录,打开Vim运行":helptags ."。然后在.vimrc下添加:
"configure NERD_commenter.vimlet mapleader=","
这样只需按下“,+c+空格”就能注释本行,或者先输入数字N,再按“,+c+空格”就能注释N行。
7.a.vim
官网下载,得到a.vim文件,直接放到$HOME/.vim/plugin目录,无需任何配置。打开一个.c文件,运行命令“:A”就能立刻切换到对应的.h文件;运行“:AV”就能分屏显示.c和.h文件。
8.DoxygenToolKit
下载。使用Dox、DoxAuthor、DoxLic命令,可以在光标位置分别创建函数注释、作者注释、licence注释。注释的内容是可配置的,如:
let g:DoxygenToolkit_briefTag_pre="@Synopsis " let g:DoxygenToolkit_paramTag_pre="@Param " let g:DoxygenToolkit_returnTag="@Returns " let g:DoxygenToolkit_blockHeader="--------------------------------------------------------------------------" let g:DoxygenToolkit_blockFooter="----------------------------------------------------------------------------" let g:DoxygenToolkit_authorName="Mathias Lorente" let g:DoxygenToolkit_licenseTag="My own license"
9.参考资料
[1] 把VIM打造成一个真正的IDE(1)
[2] 把VIM打造成一个真正的IDE(2)
[3] 把VIM打造成一个真正的IDE(3).
[4] Vim的快速注释插件NerdCommenter
来源:https://www.cnblogs.com/opennaive/p/3312794.html