Vim Omnicppcomplete - 部分工作

时间:2012-11-16 11:10:56

标签: vim ctags omnicomplete omnicppcomplete

我刚刚安装了omnicppcomplete,它“很有用”。

行为真的很奇怪,Omnicppcomplete正在为一些文件而不是其他文件。

例如为: 如果我打开file1.cpp omnicppcomplete正在工作,如果我推。 但是,如果我打开file2.cpp omnicppcomplete不再工作,我收到错误: - Omni完成(^ O ^ N ^ P)未找到模式。

这是我完整的.vimrc:

" -------------------------------- PLUGINS ----------------------------"
"############### ctags

" build tags of your own project
map <C-c> :!ctags -R --sort=yes --c++-kinds=+p --fields=+iaS --extra=+q .<CR>

"############### OmniCppComplete
au BufNewFile,BufRead,BufEnter *.cpp,*.hpp set omnifunc=omni#cpp#complete#Main
filetype on

" configure tags - add additional tags here or comment out not-used ones
set tags+=~/.vim/tags/cpp
set tags+=~/.vim/tags/cuda

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

此外,我正在使用MacVim 7.3。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

第一件事:我建议你不要手动处理ctags,而是使用插件Indexer,它会自动完成所有工作。我长期使用Indexer和omnicppcomplete,在大多数情况下omnicppcomplete可以接受。

有关详细信息,请参阅我的文章:Vim: convenient code navigation for your projects,它详细解释了Indexer + Vimprj的用法。

第二件事:Omnicppcomplete可以接受,但并不完美。对于C / C ++自动完成,我建议您不要使用omnicppcomplete,而是使用clang_complete插件。它非常强大,完成不是通过丑陋的标签方法完成的,而是使用真正的C / C ++ / Objective-C编译器(这是铿锵声)。