Vim, С++, YCM и Syntastic включают проблемы с контуром

Я чувствую, что у меня есть потрясающая настройка для программирования на С++ с помощью Vim, но я не могу найти способ сообщить Vim, YCM и Syntastic, где искать заголовки. Было бы очень неприятно вручную устанавливать переменные пути включения для Vim, YCM и Syntastic каждый раз, когда я хочу работать над проектом, когда эта информация существует в Makefile. Существуют ли автоматические решения для установки глобального пути include?

Изменить: он даже не найдет заголовки, если я установил путь следующим образом: set path =..,/usr/include, include,../include,/home/steven/ovgl/include, ""

Ответ 1

Ваши заголовки должны появиться в ваших файлах тегов (см. : h tags, если вы не знаете об этом).

Затем YouCompleteMe может считывать информацию о ваших заголовках из файла тега, как описано в плагине faq:

YCM не читает идентификаторы из моих файлов тегов

Сначала поставьте let g:ycm_collect_identifiers_from_tags_files = 1 в свой vimrc.

Убедитесь, что вы используете Exuberant Ctags для создания файлов тэгов с единственным поддерживаемым форматом тегов является формат Exuberant Ctags. Формат из "простых" ctags НЕ поддерживается. Выход ctags -version должен список "Exuberant Ctags".

Ctags необходимо вызвать с помощью --fields=+l (нижний регистр L, а не один), потому что YCM нуждается в поле language:<lang> в тегах выход.

ПРИМЕЧАНИЕ. Mac OS X поставляется с "обычными" ctags, установленными по умолчанию. brew установить ctags предоставит вам версию Exuberant Ctags.

Также убедитесь, что параметр Vim tags установлен правильно. См. :h 'tags'для деталей. Если вы хотите увидеть, какие файлы тегов YCM будут читать для данного буфера, запустите :echo tagfiles() с активным активным буфером. Обратите внимание, что эта функция будет перечислять только те файлы тегов, которые уже существуют.

Ответ 2

Я столкнулся с подобной проблемой. Мне это нужно для использования с разработкой с использованием llvm. Я решил это, выполнив следующие шаги:

  • Ctags -R --fields=+l * в вашей базе проектов/кода.
  • В файле пользователя .vimrc добавьте let g:ycm_collect_identifiers_from_tags_files = 1
  • cp ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py ~/
  • Добавить еще одну строку в .vimrc let g:ycm_global_ycm_extra_conf = '/home/<user>/ycm_extra_conf.py'
  • reset терминал или нажмите bash

Примечание. Вы должны запустить vim в каталоге с тегами, присутствующими в нем. Или вам может потребоваться явно указать каталог, в котором присутствуют теги.

Ответ 3

Вы отправили поиск YCM-Generator. Это script, который генерирует ycm_extra_conf.py, запустив make и ищет все используемые флаги. Вы запускаете его один раз для проекта и повторно запускаете только при изменении файла.