1

我刚刚安装了omnicppcomplete,它正在“kindof”工作。

这种行为真的很奇怪,Omnicppcomplete 适用于某些文件,但不适用于其他文件。

例如:如果我打开 file1.cpp,如果我 push ,omnicppcomplete 正在工作。但是,如果我打开 file2.cpp,omnicppcomplete 不再工作并且我得到错误: -- Omni complete (^O^N^P) Pattern not found。

这是我完整的.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。

任何帮助深表感谢。

4

1 回答 1

0

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

详细信息请看我的文章:Vim:为您的项目提供方便的代码导航,详细解释了 Indexer + Vimprj 的使用。

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

于 2012-11-16T12:20:46.867 回答