Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ VIM omnicppcomplete不适用于功能参数_C++_Vim_Omnicppcomplete - Fatal编程技术网

C++ VIM omnicppcomplete不适用于功能参数

C++ VIM omnicppcomplete不适用于功能参数,c++,vim,omnicppcomplete,C++,Vim,Omnicppcomplete,我试图在VIM中使用omnicppcomplete,但我无法让它对传递给函数的变量起作用。例如,键入以下命令 function1( MyObject obj ) { obj.| } 结果为“-Omni completion(^O^N^p)模式未找到” 如果我在函数中定义局部变量: function1 ( MyClass obj) { MyClass obj2; obj2.| } 它工作得很好,我得到了一个成员的弹出列表。它也适用于全局对象,但似乎无法确定作为函数参数传

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

function1( MyObject obj ) {
    obj.|
}
结果为“-Omni completion(^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>
set tags+=~/.vim/tags/cpp
设置标记+=~/Projects/myproject/Software/tags
“全方位
让OmniCpp_NamespaceSearch=2
让OmniCpp_GlobalScopeSearch=1
让OmniCpp_ShowAccess=1
让OmniCpp_ShowPrototypeInAbbr=1“显示函数参数
让OmniCpp_可在完成后自动完成。
让OmniCpp_在->
让OmniCpp_MayCompleteScope=1“自动完成后::
让OmniCpp_DefaultNamespaces=[“std”,“_GLIBCXX_std”]
让OmniCpp_LocalSearchDecl=1“使用本地搜索功能,括号位于第1列
让OmniCpp_DisplayMode=1
au BufNewFile、BufRead、BufEnter*.cpp、*.hpp集合omnifunc=omni#cpp#complete#Main
au CursorMovedI,InsertLeave*如果pumvisible()==0 |无提示!pclose | endif
设置completeopt=menuone,菜单,最长,预览
地图:/usr/bin/ctags-R--exclude=backups--language force=C++--sort=yes-C++-kinds=+pl--fields=+iaS--extra=+q-f~/Software/tags~/Software。

遗憾的是,OMNIPPGORM依赖于CTAGS,这对于C++理解来说不是很有效。
你应该看一下clang_complete。很有可能得到更好的结果。

< P>不幸的是,OMNIPPGORM依赖于CTAGS,这对于C++理解来说不是很有效。
你应该看一下clang_complete。它可能会提供更好的结果。

在这里非常有效,您可以选择OmniCpp选项。您在一种情况下使用
MyObject
,在另一种情况下使用
MyClass
,这可能是错误?我在这里没有看到任何设置来重新生成~/Projects/myproject/Software/tags中的标记。这些标记是那些偶然出现的日期吗?在这里使用您的OmniCpp选项可以完美地工作。您在一种情况下使用
MyObject
,在另一种情况下使用
MyClass
,这可能是错误吗?我在这里没有看到任何重新生成~/Projects/myproject/Software/tags中的标记的设置,这些标记是偶然出现的吗?