12

我觉得我有一个很棒的使用 Vim 进行 C++ 编程的设置,但是我找不到告诉 Vim、YCM 和 Syntastic 在哪里搜索头文件的方法。当 Makefile 中存在此信息时,每次我想处理项目时,必须手动设置 Vim、YCM 和 Syntastic 的包含路径变量真的很烦人。是否有任何用于设置全局包含路径的自动化解决方案?

编辑:如果我这样设置路径,它甚至找不到标题 ":set path = ".,/usr/include,include,../include,/home/steven/ovgl/include,,""

4

3 回答 3

3

您的标头应该出现在您的标记文件中(如果您不知道,请参阅:h 标记)。

然后YouCompleteMe能够从标签文件中读取有关您的标头的信息,如插件常见问题解答中所述:

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 install ctags 将为您提供 Exuberant Ctags 版本。

还要确保您的 Vim 标签选项设置正确。详情请参阅:h 'tags' 。如果您想查看 YCM 将为给定缓冲区读取哪些标记文件,请:echo tagfiles()在相关缓冲区处于活动状态时运行。请注意,该函数将仅列出已存在的标记文件。

于 2013-08-05T11:38:03.280 回答
1

你应该寻找YCM-Generatormake它是一个脚本,通过运行并查找所有使用的标志来生成 ycm_extra_conf.py 。您为项目运行一次,仅在 make 文件更改时重新运行。

于 2017-03-22T09:10:46.223 回答
0

我遇到过类似的问题。我需要它来使用 llvm 进行开发。我按照以下步骤解决了它:

  1. Ctags -R --fields=+l *在您的项目/代码库中。
  2. 在您的用户 .vimrc 文件中,添加let g:ycm_collect_identifiers_from_tags_files = 1
  3. cp ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py ~/
  4. 在 .vimrc 中添加另一行let g:ycm_global_ycm_extra_conf = '/home/<user>/ycm_extra_conf.py'
  5. 重置终端或点击bash

注意:您应该在带有标签的目录中启动 vim。或者您可能需要明确指定标签所在的目录。

于 2015-02-10T01:33:32.020 回答