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
и ищет все используемые флаги. Вы запускаете его один раз для проекта и повторно запускаете только при изменении файла.