VIM omnicppcomplete对函数参数不起作用

VIM omnicppcomplete does not work for function parameters

本文关键字:参数 不起作用 函数 omnicppcomplete VIM      更新时间:2023-10-16

我试图在VIM中使用omnicppcomplete,我无法让它为传递给函数的变量工作。例如,输入以下

function1( MyObject obj ) {
    obj.|
}

导致"——Omni补全(^O^N^ p)模式未找到"

如果我在函数中定义了一个局部变量:

function1 ( MyClass obj) {
    MyClass obj2;
    obj2.|
}

它工作得很好,我得到一个成员的弹出列表。它也可以很好地用于全局对象,但似乎无法确定作为函数参数传递的变量是什么。

My .vimrc包含:

set tags+=~/.vim/tags/cpp
set tags+=~/Projects/myproject/Software/tags
" OmniCppComplete
let OmniCpp_NamespaceSearch = 2
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"]
let OmniCpp_LocalSearchDecl = 1 " use local search function, bracket on 1st column
let OmniCpp_DisplayMode = 1 
au BufNewFile,BufRead,BufEnter *.cpp,*.hpp set omnifunc=omni#cpp#complete#Main
au CursorMovedI,InsertLeave * if pumvisible() == 0|silent! pclose|endif
set completeopt=menuone,menu,longest,preview

map <F8> :!/usr/bin/ctags -R --exclude=backups --language-force=C++ --sort=yes -c++-kinds=+pl --fields=+iaS --extra=+q -f ~/Software/tags ~/Software .<cr>

不幸的是,omnicppcomplete依赖于标签,这对于c++的理解并不是很有效。

你应该看看clang_complete。