2011-12-28 82 views
0

我試圖讓omnicomplete工作的C++,而一切似乎是爲了當我重置我的omnifunc爲omnifunc=omni#cpp#complete#Main,插件不識別omnifunc,我得到一個pattern not found錯誤。我已經安裝了Ctags並將其放入.vim/<name_of_dir>,同時將cpp_src添加到.vim/tags並運行必要的命令。 (更多信息請參見hereOmniComplete和Vim問題

問題是,無論我嘗試什麼,我仍然遇到此錯誤。我能做些什麼才能做到這一點?我以前試過這個,第一次只是頭痛,結果導致我無法工作。但是,這一次,我確定了。

的vimrc

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 

與往常一樣,任何的幫助深表感謝。

更新

發佈我的C標籤文件,爲他人在案件檢查存在與一個問題:

ctags -R --c++-kinds=+p --fields-+iaS --extra=+q . 

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

回答

1

顯然,Vim中找不到你的標籤文件。您的命令ctags -R --c++-kinds=+p --fields-+iaS --extra=+q .將在當前目錄中創建tags文件。確保這是你想要的。

請執行以下命令:

:set tags?

,並確保你的標籤文件出現在結果列表中。您也可以將光標放在任何符號(例如某個班級名稱)上並按Ctrl-]。如果你的tags沒問題,Vim會跳轉到這個符號定義。如果不是,那麼當然,omnicppcomplete將不起作用。 (我用omnicppcomplete超過一年多了,它的工作原理並不完全與複雜的類/結構,但工程。)

最後,檢查my answer here,因爲我會建議absolutelly相同的:得到完美的C/C++/Objective-C代碼完成,你應該使用Clang Complete(沒有ctags這種完成需要)。

如果您想要標籤存在(比如說,要輕鬆跳轉到符號定義),請使用Indexer插件。