Windows下VIM全能补全设置攻略,含stlport,boost,VC9.0库的ctags生成

      vim的OMNI补全(以下称”全能补全”)可以支持多种程序语言,包括C,C++, XML/HTML,CSS,JAVASCRIPT,PHP,RUBY等,详细列表请参阅” :help compl-omni-filetypes“。在本文中,主要介绍C及C++的全能补全。

      vim在对不同类型的文件进行补全时,会根据文件类型,为其设置不同的补全函数。也就是说,要实现全能补全功能,需要 打开文件类型检测。把下面的命令加到你的vimrc中:
filetype plugin indent on 

     你可以查看’omnifunc‘选项,来知道当前的补全函数是什么。

     对C及C++代码的全能补全需要使用Exuberant ctags生成的标签文件,我们在前面的文章中介绍过如何使用Exuberant ctags程序来生成标签文件。

     可以在这里找到MS-Windows上已经编译好的可执行版本:

http://ctags.sourceforge.net/

     MS-Windows中我们只需要压缩包里面的ctags.exe,同时我们新建一个批处理文件,命名为“ctags自动补全命令OmniCppComplete用.bat”,在里面添加代码:

ctags.exe -R --c++-kinds=+p --fields=+iaS --extra=+q


有了以上两个文件后,我们就可以生成tags文件了。我的工作目录,vc9.0,stlport,boost库文件分别为

E:\My Projects\Visual Studio 2008\Projects
D:\Program Files\Microsoft Visual Studio 9.0\VC\include
D:\STLport-5.2.1\stlport
D:\boost_1_46_1\boost

     我们可以把ctags.exe和bat文件拷贝到以上目录,双击bat文件,就会生成相应的tags文件了。

     注:boost的typeof目录中存在循环嵌套,ctags文件会无限增长。这是由于typeof里面的vector50.hpp,vector100.hpp,vector150.hpp,vector200.hpp造成的,移走这些生成tags以后,再移回来就ok了。

     接着,我们就要修改vimrc的设置,添加下面代码:

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => Exuberant Ctags 设置 2011-6-3 15:50:30
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

set tags+=tags;  
set autochdir 
set tags+=D:\STLport-5.2.1\stlport\tags
set tags+=D:/Program\ Files/Microsoft\ Visual\ Studio\ 9.0/VC/include/tags
set tags+=D:\boost_1_46_1\boost\tags;


      注意第一个命令里的分号是必不可少的。这个命令让vim首先在当前目录(即你所编辑文件的目录)里寻找tags文件,如果没有找到tags文件,或者没有找到对应的目标,就到父目录中查找,一直向上递归。因为tags文件中记录的路径总是相对于tags文件所在的路径,所以要使用第二个设置项来改变vim的当前目录。

      由于vimrc不支持路径存在空格,但是支持两种斜杠表示方式,所以针对vc9.0可以用以上的表示方式。

      缺省的,vim会使用下拉菜单和一个preview窗口(预览窗口)来显示匹配项目,下拉菜单列出所有匹配的项目,预览窗口则显示选中项目的详细信息。打开预览窗口会导致下拉菜单抖动,因此我一般都去掉预览窗口的显示,这需要改变’completeopt‘的值,我的设置如下:

set completeopt=longest,menu 

     上面的设置表明,只在下拉菜单中显示匹配项目,并且会自动插入所有匹配项目的相同文本。

     如果要支持C++的全能补全,需要到vim主页下载OmniCppComplete插件,链接如下:

 http://www.vim.org/scripts/script.php?script_id=1520

     下载后,把它解压到你的.vim目录(在windows下是vimfiles目录),它会安装以下文件:

after\ftplugin\cpp.vim
autoload\omni\common\debug.vim
\utils.vim
autoload\omni\cpp\complete.vim
\includes.vim
\items.vim
\maycomplete.vim
\namespaces.vim
\settings.vim
\tokenizer.vim
\utils.vim
doc\omnicppcomplete.txt 

     确保你已关闭了vi兼容模式,并允许进行文件类型检测:

set nocp
filetype plugin on 


     在vimrc中进行如下设置

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => omnicppcomplete 设置 2011-6-4 1:29:01
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
set completeopt=menu
let OmniCpp_GlobalScopeSearch = 1  " 0 or 1
let OmniCpp_NamespaceSearch = 1   " 0 ,  1 or 2
let OmniCpp_DisplayMode = 1
let OmniCpp_ShowScopeInAbbr = 0
let OmniCpp_ShowPrototypeInAbbr = 1
let OmniCpp_ShowAccess = 1
let OmniCpp_MayCompleteDot = 1
let OmniCpp_MayCompleteArrow = 1
let OmniCpp_MayCompleteScope = 1 





你可能感兴趣的:(Windows下VIM全能补全设置攻略,含stlport,boost,VC9.0库的ctags生成)