2011-12-28 13 views
0

私はomnicompleteをC++で動作させようとしていますが、omnifuncをomnifunc=omni#cpp#complete#Mainにリセットするとすべてが順番になっているようですが、プラグインはomnifuncを認識せず、pattern not foundエラー。私はCtagsをインストールして.vim/<name_of_dir>に入れ、cpp_src.vim/tagsに追加し、必要なコマンドを実行します。 (詳細はhereを参照してください)OmniCompleteと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 

はいつものように、任意のヘルプははるかに高く評価されます。

更新

はそれで問題がある場合には検査する他の人のための私のctagsファイルを投稿:

明らか
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?

とあなたのtagsファイルがリストの結果の中に存在していることを確認してください。

次のコマンドを実行してください。任意のシンボル(たとえば、クラス名)にカーソルを置き、Ctrl-]を押すこともできます。 tagsがOKならば、Vimはこのシンボル定義にジャンプします。そうでなければ、もちろん、omnicppcompleteは動作しません。私はabsolutelly同じ推薦するので、最終的には、my answer hereを確認し、(私は一年以上もomnicppcompleteを使用し、それは複雑なクラス/構造体ではない完璧に動作しますが、動作します。。)

をと:を完璧Cを取得するために/ C++/Objective-Cコード補完の場合はClang Completeを使用してください(この種の補完にはctagsは必要ありません)。

タグが存在するようにする(たとえば、シンボル定義に簡単にジャンプする)場合は、Indexerプラグインを使用してください。

関連する問題