OmniComplete и Vim вопросы - PullRequest
       35

OmniComplete и Vim вопросы

0 голосов
/ 29 декабря 2011

Я пытаюсь заставить omnicomplete работать на C ++, и, хотя все, кажется, в порядке, когда я устанавливаю свой omnifunc на omnifunc=omni#cpp#complete#Main, плагин не распознает omnifunc, и я получаю pattern not found ошибка. Я установил Ctags и поместил его в .vim/<name_of_dir> вместе с добавлением cpp_src к .vim/tags и запуском необходимых команд. (см. здесь для получения дополнительной информации)

Проблема в том, что, что бы я ни пытался, я все равно получаю эту ошибку. Что я могу сделать, чтобы заставить это работать? Я пробовал это раньше, и в первый раз я почувствовал головную боль, из-за которой я не смог заставить ее работать. На этот раз, однако, я полон решимости.

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 Ответ

1 голос
/ 29 декабря 2011

Очевидно, что Vim не может найти ваш файл тегов. Ваша команда ctags -R --c++-kinds=+p --fields-+iaS --extra=+q . создаст tags файл в текущем каталоге. Убедитесь, что это то, что вы хотите.

Пожалуйста, выполните следующую команду:

:set tags?

и убедитесь, что ваш файл тегов присутствует в результирующем списке. Вы также можете поместить курсор на любой символ (скажем, на какое-нибудь имя класса) и нажать Ctrl-]. Vim перейдет к этому определению символа, если ваш tags в порядке. Если это не так, то, конечно, omnicppcomplete не будет работать. (Я использую omnicppcomplete более года, и это работает. Не совсем со сложными классами / структурами, но работает.)

И, наконец, отметьте мой ответ здесь , потому что я бы рекомендовал абсолютно то же самое: , чтобы получить идеальное завершение кода на C / C ++ / Objective-C, вы должны использовать Clang Complete (для этого вида завершения не требуется ctags).

И если вы хотите, чтобы присутствовали теги (скажем, для быстрого перехода к определению символов), используйте плагин Indexer .

...