红联Linux门户
Linux帮助

ubuntu下vim的c++补全

发布时间:2016-05-17 15:33:54来源:linux网站作者:lianghe_work

首先确定vim编辑.cc或者.cpp文件时当前自动补全函数,在命令模式下输入
:set omnifunc?
如果得到的结果为:omnifunc=ccomplete#Complete,说明有必要进行以下的操作以实现针对c++的自动补全


1、首先安装OmniCppComplete,参见:
http://www.vim.org/scripts/script.php?script_id=1520

ubuntu下vim的c++补全

安装的过程很简单,与大多数vim插件一样,cd到~/.vim/目录解压所下载的文件即可


2、在~/.vim/目录下创建tags子目录


3、创建stdc++ 对应的tags:
A)首先下载经高手修改定制的libstdc++头文件,可以到这里下载:
http://www.vim.org/scripts/script.php?script_id=2358

ubuntu下vim的c++补全

并将其解压到~/.vim/tags
B) 运行以下命令
$ cd ~/.vim/tags
$ ctags -R --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++ cpp_src
$ mv tags cpp


4、修改~/.vimrc文件
在其中加入以下内容:
" configure tags - add additional tags here or comment out not-used ones
set tags+=~/.vim/tags/cpp
set tags+=~/.vim/tags/gl
set tags+=~/.vim/tags/fl
" build tags of your own project with CTRL+F12
map <C-F12> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR>

" OmniCppComplete
let OmniCpp_NamespaceSearch = 1
let OmniCpp_GlobalScopeSearch = 1
let OmniCpp_ShowAccess = 1
let OmniCpp_ShowPrototypeInAbbr = 1 " show function parameters
let OmniCpp_MayCompleteDot = 1 " autocomplete after .
let OmniCpp_MayCompleteArrow = 1 " autocomplete after ->
let OmniCpp_MayCompleteScope = 1 " autocomplete after ::
let OmniCpp_DefaultNamespaces = ["std", "_GLIBCXX_STD"]
" automatically open and close the popup menu / preview window
au CursorMovedI,InsertLeave * if pumvisible() == 0|silent! pclose|endif
set completeopt=menuone,menu,longest,preview


5、检验
用vim打开cpp文件,输入
std::
将得到std命名空间的所有标示符,按CTRL+N或者CTRL+P选择
继续输入std::vector vi,然后输入
vi.
vim将自动提示其成员


本文永久更新地址:http://www.linuxdiyf.com/linux/20727.html