【问题标题】:VIM omnicppcomplete does not work for function parametersVIM omnicppcomplete 对函数参数不起作用
【发布时间】:2011-08-22 21:41:16
【问题描述】:

我正在尝试在 VIM 中使用omnicppcomplete,但我无法让它对传递给函数的变量起作用。例如,键入以下内容

function1( MyObject obj ) {
    obj.|
}

导致“--Omni 补全 (^O^N^P) Pattern not found”

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

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

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

我的 .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>

【问题讨论】:

  • 在这里完美运行,与您的确切 OmniCpp 选项一起使用。您在一种情况下使用MyObject,在另一种情况下使用MyClass,也许这是错误?
  • 我没有看到这里有任何设置来重新生成 ~/Projects/myproject/Software/tags 中的标签 这些是偶然的吗?

标签: c++ vim omnicppcomplete


【解决方案1】:

不幸的是,omnicppcomplete 依赖于 ctags,这对于 C++ 的理解效率并不高。

你应该看看 clang_complete。它可能会产生更好的结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-26
    • 2014-12-14
    • 1970-01-01
    相关资源
    最近更新 更多