Vim,C ++,YCM和Syntastic包含路径问题

时间:2013-08-03 00:35:03

标签: c++ vim syntastic

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

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

3 个答案:

答案 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进行开发。 我按照以下步骤解决了这个问题:

  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. 中添加另一行
  6. 重置终端或点击bash
  7. 注意:您应该在包含标记的目录中启动vim。或者您可能需要明确指定标记所在的目录。