Vim Omnicppcomplete - частично работает
Я только что установил omnicppcomplete, и это "своего рода" работает.
Поведение действительно странное, Omnicppcomplete работает для некоторых файлов, но не для других.
Например: если я открою file1.cpp, работает omnicppcomplete, если я нажму. Однако, если я открываю file2.cpp, omnicppcomplete больше не работает, и я получаю ошибку: - Omni complete (^O^N^P) Шаблон не найден.
Вот мой полный.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.
Буду признателен за любую оказанную помощь.
1 ответ
Первое: я бы порекомендовал вам не иметь дело с ctags
вручную, но вместо этого используйте плагин Indexer, он сделает всю работу автоматически. Я использовал Indexer и omnicppcomplete в течение длительного времени, в большинстве случаев omnicppcomplete работает приемлемо.
Подробную информацию см. В моей статье: Vim: удобная навигация по коду для ваших проектов, в которой подробно объясняется использование Indexer + Vimprj.
Второе: Omnicppcomplete работает приемлемо, но не идеально. Для автозаполнения C/C++ я бы порекомендовал вам не использовать omnicppcomplete, а вместо этого использовать плагин clang_complete. Это действительно мощно, завершение выполняется не методом уродливых тегов, а с помощью реального компилятора C/C++/Objective-C (который называется clang).