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
Vim已完成-部分工作_Vim_Ctags_Omnicomplete_Omnicppcomplete - Fatal编程技术网

Vim已完成-部分工作

Vim已完成-部分工作,vim,ctags,omnicomplete,omnicppcomplete,Vim,Ctags,Omnicomplete,Omnicppcomplete,我刚刚安装了OmnicpComplete,它“有点”正常工作 这种行为真的很奇怪,OmnicpComplete对某些文件有效,但对其他文件无效 例如: 如果我打开文件1.cpp,如果我按下,omnicppcomplete将工作。 但是,如果我打开file2.cpp omnicppcomplete不再工作,则会出现以下错误: --找不到全向完成(^O^N^P)模式 这是我完整的。vimrc: " -------------------------------- PLUGINS ----------

我刚刚安装了OmnicpComplete,它“有点”正常工作

这种行为真的很奇怪,OmnicpComplete对某些文件有效,但对其他文件无效

例如: 如果我打开文件1.cpp,如果我按下,omnicppcomplete将工作。 但是,如果我打开file2.cpp omnicppcomplete不再工作,则会出现以下错误: --找不到全向完成(^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
“-------------------------------------插件------------------”
“#####################ctags
“生成您自己项目的标记
地图:!ctags-R--sort=yes--c++-classes=+p--fields=+iaS--extra=+q。
“全方位
au BufNewFile、BufRead、BufEnter*.cpp、*.hpp集合omnifunc=omni#cpp#complete#Main
侦测文件类型
“配置标记-在此处添加其他标记或注释掉未使用的标记
设置标签+=~/.vim/tags/cpp
设置标记+=~/.vim/tags/cuda
让OmniCpp_NamespaceSearch=1
让OmniCpp_GlobalScopeSearch=1
让OmniCpp_ShowAccess=1
让OmniCpp_ShowPrototypeInAbbr=1“显示函数参数
让OmniCpp_可在完成后自动完成。
让OmniCpp_在->
让OmniCpp_MayCompleteScope=1“自动完成后::
让OmniCpp_DefaultNamespaces=[“std”,“_GLIBCXX_std”]
“自动打开和关闭弹出菜单/预览窗口
au CursorMovedI,INSERTLEVE*如果pumvisible()==0 |静默!pclose | endif
设置completeopt=menuone,菜单,最长,预览
此外,我正在使用MacVim 7.3


非常感谢您的帮助。

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

有关详细信息,请参阅我的文章:,它详细解释了Indexer+Vimprj的用法


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

:s/use plugin/use my plugin
;-)@romainl,没错,但它在本质上改变了什么吗?=)一点也没有,特别是考虑到你的插件的实用性。我认为披露这类事情是一种很好的形式。但我真的不在乎,因此笑了。@dimtry:clangèu也完成了所有类型的库的工作吗?那么之后呢包括标头,例如:cuda_runtime.h?@user1829358,
clang_complete
仅使用
clang
的输出,这是一个真正强大的编译器。当然,
clang
正确处理标头包括的内容,以及编译器应该处理的所有内容。