【问题标题】:OmniCppComplete in Vim available only as rootVim 中的 OmniCppComplete 只能作为 root 使用
【发布时间】:2012-10-07 12:14:05
【问题描述】:

我尝试在 Vim 中安装 OmniCppComplete 并按照本教程进行操作: http://en.kioskea.net/faq/2367-the-autocompletion-c-c-in-vim

我注意到该插件仅在我以 root 身份运行时才有效。谁能给我一个提示如何使这个插件可供所有用户使用?

.Vimrc:(来自教程)

set nocp      
filetype plugin on      

set tags+=~/.vim/tags/stl      
set tags+=~/.vim/tags/gl      
set tags+=~/.vim/tags/sdl      
set tags+=~/.vim/tags/qt4      


noremap <F12> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<cr>      
inoremap <F12> <Esc>:!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<cr>      

let OmniCpp_NamespaceSearch = 1      
let OmniCpp_GlobalScopeSearch = 1      
let OmniCpp_ShowAccess = 1      
let OmniCpp_MayCompleteDot = 1      
let OmniCpp_MayCompleteArrow = 1      
let OmniCpp_MayCompleteScope = 1      
let OmniCpp_DefaultNamespaces = ["std", "_GLIBCXX_STD"]      

au CursorMovedI,InsertLeave * if pumvisible() == 0|silent! pclose|endif      
set completeopt=menuone,menu,longest,preview

我会很高兴所有提示和答案! 问候,

【问题讨论】:

  • .vimrc 的路径是什么?你在哪里安装插件?当您设置它时,您是否以 root 身份登录? set nocp 没用。
  • 提示:我发现clang complete 比 OmniCppComplete 工作好于:它使用 libclang 来“即时”解析您的代码,因此您可以得到完美的建议而无需创建标签。
  • romainl: 路径是 ~/.vimrc 是的,我是以 root 身份登录的。 Matteo Italia:谢谢,我也去看看。

标签: c++ vim autocomplete vim-plugin omnicomplete


【解决方案1】:

我找到了解决方案(根据 romainl 的评论,谢谢!)。我对非 root 用户重复了相同的过程。

我需要稍微修改一下我的 .vimrc:

syntax on
filetype plugin on

set tags+=/home/USER_NAME/.vim/tags/stl/tags
set tags+=/home/USER_NAME/.vim/tags/gl/tags
set tags+=/home/USER_NAME/.vim/tags/sdl/tags

noremap <F12> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<cr>
inoremap <F12> <Esc>:!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<cr>

let OmniCpp_NamespaceSearch = 1
let OmniCpp_GlobalScopeSearch = 1
let OmniCpp_ShowAccess = 1
let OmniCpp_MayCompleteDot = 1
let OmniCpp_MayCompleteArrow = 1
let OmniCpp_MayCompleteScope = 1
let OmniCpp_DefaultNamespaces = ["std", "_GLIBCXX_STD"]

au CursorMovedI,InsertLeave * if pumvisible() == 0|silent! pclose|endif
set completeopt=menuone,menu,longest,preview

首先,我已经替换了

set tags+=~/.vim/tags/stl

与:

set tags+=/home/USER_NAME/.vim/tags/stl

其次,我需要直接指向“标签”文件,所以:

set tags+=/home/USER_NAME/.vim/tags/stl/tags

其他方式,提供未找到的OmniCpp模式。更多信息例如在这里:vim omnicppcomplete pattern not found

希望对其他人有所帮助:) 问候并感谢您的帮助。现在它也适用于非 root 用户。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-10
    • 1970-01-01
    • 2012-01-06
    • 2011-07-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多