我觉得我有一个很棒的使用Vim进行C ++编程的设置,但我找不到告诉Vim,YCM和Syntastic搜索标题的方法。每当我想在Makefile中存在此信息时想要处理项目时,必须手动设置Vim,YCM和Syntastic的包含路径变量会非常烦人。是否有用于设置全局包含路径的自动化解决方案?
编辑:如果我设置路径,它甚至找不到标题“:set path =”。,/ usr / include,include,.. / include,/ home / steven / ovgl / include ,, “”
答案 0 :(得分:2)
您的标题应该出现在您的代码文件中(如果您不知道,请参阅:h tags。)
然后YouCompleteMe
能够从标记文件中读取有关标题的信息,如plugin faq中所述:
YCM不会从我的代码文件中读取标识符
首先,将
let g:ycm_collect_identifiers_from_tags_files = 1
放入vimrc。确保您使用Exuberant Ctags生成标记文件 唯一支持的标记格式是Exuberant Ctags格式。格式 从“普通”ctags不支持。 ctags --version的输出应该是 列出“旺盛的标签”。
需要使用
--fields=+l
调用Ctags(这是一个小写的L,而不是一个 一)因为YCM需要标签中的language:<lang>
字段 输出注意:Mac OS X默认安装了“普通”ctags。 brew安装 ctags将为您提供Exuberant Ctags版本。
还要确保正确设置了Vim标签选项。见
:h 'tags'
详情。如果你想看看YCM将为给定的文件读取哪些标签文件 缓冲区,在相关缓冲区处于活动状态时运行:echo tagfiles()
。注意 该函数仅列出已存在的标记文件。
答案 1 :(得分:1)
你要寻找YCM-Generator。它是一个通过运行make
并查找所有使用的标志来生成ycm_extra_conf.py的脚本。您为项目运行一次,并仅在make文件更改时重新运行。
答案 2 :(得分:0)
我遇到过类似的问题。我需要这个用于使用llvm进行开发。 我按照以下步骤解决了这个问题:
Ctags -R --fields=+l *
在您的项目/代码库中。let g:ycm_collect_identifiers_from_tags_files = 1
cp ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py ~/
let g:ycm_global_ycm_extra_conf = '/home/<user>/ycm_extra_conf.py'
bash
注意:您应该在包含标记的目录中启动vim。或者您可能需要明确指定标记所在的目录。