首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OmniComplete和Vim问题

OmniComplete和Vim问题
EN

Stack Overflow用户
提问于 2011-12-28 22:59:46
回答 1查看 1.5K关注 0票数 0

我试着让所有的功能都能为C++工作,虽然一切看起来都很正常,但是当我把我的总括函数重置为omnifunc=omni#cpp#complete#Main时,插件没有识别出全功能,而且我得到了一个pattern not found错误。我已经安装了Ctag并将其放入.vim/<name_of_dir>中,同时将cpp_src添加到.vim/tags并运行必要的命令。(更多信息请参见这里 )

问题是,不管我做了什么,我还是会犯这个错误。我能做些什么才能让它发挥作用?我以前试过这样做,第一次只是头痛,导致我无法让它工作。但这一次,我下定决心。

VimRc

代码语言:javascript
复制
  1 syntax on
  2 set number
  3 set autoindent
  4 set ft=nasm
  5 set ts=4
  6 set nowrap
  7 set nocp
  8 filetype plugin on
  9 map <C-F12> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR>
 10 
 11 autocmd FileType cpp set omnifunc=omni#cpp#complete#Main
 12 
 13 " configure tags - add additional tags here or comment out not-used ones
 14 set tags+=~/.vim/tags/cpp
 15 set tags+=~/.vim/tags/gl
 16 set tags+=~/.vim/tags/sdl
 17 " set tags+=~/.vim/tags/qt4
 18 " " build tags of your own project with Ctrl-F12
 19 map <C-F12> :!ctags -R --sort=yes --c++-kinds=+p --fields=+iaS --extra=+q .<CR>
 20 "
 21 " " OmniCppComplete
 22 let OmniCpp_NamespaceSearch = 1
 23 let OmniCpp_GlobalScopeSearch = 1
 24 let OmniCpp_ShowAccess = 1
 25 let OmniCpp_ShowPrototypeInAbbr = 1 " show function parameters
 26 let OmniCpp_MayCompleteDot = 1 " autocomplete after .
 27 let OmniCpp_MayCompleteArrow = 1 " autocomplete after ->
 28 let OmniCpp_MayCompleteScope = 1 " autocomplete after ::
 29 let OmniCpp_DefaultNamespaces = ["std", "_GLIBCXX_STD"]
 30 " " automatically open and close the popup menu / preview window
 31 au CursorMovedI,InsertLeave * if pumvisible() == 0|silent! pclose|endif
 32 set completeopt=menuone,menu,longest,preview

一如既往,任何帮助都是非常感谢的。

更新

张贴我的Ctag文件供其他人检查,以防出现问题:

代码语言:javascript
复制
ctags -R --c++-kinds=+p --fields-+iaS --extra=+q .

map <C-F12> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-29 05:06:22

很明显,Vim找不到你的标签文件。命令ctags -R --c++-kinds=+p --fields-+iaS --extra=+q .将在当前目录中创建tags文件。确保这是你想要的。

请执行以下命令:

:set tags?

并确保标签文件在结果列表中。您还可以将光标放置在任何符号(例如,某个类名)并按Ctrl-]。如果您的tags没有问题,Vim将跳到这个符号定义。如果不是,那么,当然,omnicppcomplete将无法工作。(我使用omnicppcomplete已经超过一年了,而且很有效。不完全适用于复杂的类/结构,但可以工作。)

最后,检查我在这里的回答,因为我建议完全相同:为了获得完美的C/C++/Objective代码完成,您应该使用 Clang完全 (这种完成不需要ctags )。

如果您想要标记出现(例如,为了方便地跳到符号定义),请使用索引器插件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8662246

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档