2011-08-14 20 views
2

我想在VIM中使用omnicppcomplete,我無法讓它適用於傳遞給函數的變量。例如,鍵入以下VIM omnicppcomplete不起作用的功能參數

function1(MyObject obj) { 
    obj.| 
} 

結果爲 「--Omni完成(= O^N^P)模式未找到」

如果我定義該函數內的局部變量:

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> 
+0

在這裏完美的工作,與您的確切的OmniCpp選項。你在一種情況下使用'MyObject',在另一種情況下使用'MyClass',也許這是錯誤? –

+0

我在這裏看不到任何設置來重新生成〜/ Projects/myproject/Software/tags中的標籤那些是偶然的? –

回答

0

不幸的是,omnicppcomplete依靠的ctags關於C++的理解這是不是真的有效。

你應該看看clang_complete。這很可能會帶來更好的結果。