1

omn​​icppcomplete をインストールしたところ、「一種の」動作をしています。

この動作は非常に奇妙です。Omnicppcomplete は一部のファイルでは機能しますが、他のファイルでは機能しません。

例: file1.cpp を開くと、 をプッシュすると omnicppcomplete が動作します。ただし、file2.cpp を開くと、omnicppcomplete が機能しなくなり、次のエラーが表示されます。 -- Omni complete (^O^N^P) Pattern not found.

ここに私の完全な .vimrc があります:

" -------------------------------- PLUGINS ----------------------------"
"############### ctags

" build tags of your own project
map <C-c> :!ctags -R --sort=yes --c++-kinds=+p --fields=+iaS --extra=+q .<CR>

"############### OmniCppComplete
au BufNewFile,BufRead,BufEnter *.cpp,*.hpp set omnifunc=omni#cpp#complete#Main
filetype on

" configure tags - add additional tags here or comment out not-used ones
set tags+=~/.vim/tags/cpp
set tags+=~/.vim/tags/cuda

let OmniCpp_NamespaceSearch = 1
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"]
" automatically open and close the popup menu / preview window
au CursorMovedI,InsertLeave * if pumvisible() == 0|silent! pclose|endif
set completeopt=menuone,menu,longest,preview

さらに、MacVim 7.3 を使用しています。

どんな助けでも大歓迎です。

4

1 に答える 1

0

まず、ctags手動で処理するのではなく、代わりにプラグインインデクサーを使用することをお勧めします。すべての作業が自動的に行われます。私は長い間 Indexer と omnicppcomplete を使用してきましたが、ほとんどの場合、omnicppcomplete は問題なく動作します。

詳細については、私の記事「Vim: プロジェクトの便利なコード ナビゲーション」を参照してください。この記事では、Indexer + Vimprj の使用法を徹底的に説明しています。

2 つ目: Omnicppcomplete は問題なく動作しますが、完全ではありません。C/C++ オートコンプリートについては、omnicppcomplete を使用するのではなく、clang_completeプラグインを使用することをお勧めします。これは非常に強力です。補完は醜いタグ メソッドではなく、本物の C/C++/Objective-C コンパイラ (clang) を使用して行われます。

于 2012-11-16T12:20:46.867 に答える