【问题标题】:Vim code completion doesn't work after including a standard header包含标准头文件后,Vim 代码完成不起作用
【发布时间】:2012-10-19 05:14:55
【问题描述】:

我必须在文本模式的 debian linux 中开发我的项目。我正在使用 Vim,并在其上安装了 clang_completion 插件。我在项目的根目录中创建了.clang_completion 文件:

-I.
-I/usr/include
-I/usr/include/c++/4.6

当我编写如下程序时,完成工作正常。

//#include <stdio.h>
int main()
{
  struct A
  {
    int x, y;
  };

  A a;
  a. // After putting dot, the suggestion popup appears

  return 0;
}

但是,删除第一行的注释后,它不起作用!我该如何克服这个问题?

【问题讨论】:

  • 将评论/* Killer App from Outer Space */作为文件的第一行?
  • 运行 :cope 以查看来自 Clang 的错误。
  • 顺便说一下,配置文件应该是.clang_complete而不是.clang_completion
  • 您当然应该在 C++ 中使用#include &lt;cstdio&gt; 吗?包含C 头文件会混淆clang吗?
  • @Useless:无论包含哪个头文件,都会出现问题。

标签: c++ vim autocomplete


【解决方案1】:

我发现让 clang_complete 工作的最简单方法是使用提供的 cc_args.py 文件。

编译项目时使用 clang_complete/bin/cc_args.py 而不是 gcc/g++

这将生成包含所有库和依赖项的正确 .clang_complete 文件。 在您的主文件夹中提供了 clang_complete 源目录。

示例生成文件:

CXX=$(HOME)/clang_complete/bin/cc_args.py g++

all:
    $(CXX) main.cpp

【讨论】:

    【解决方案2】:

    我过去成功使用过clang_complete插件(现在我只使用cscope和ctags,我认为足够了)。

    包含外部头文件在我的配置中运行良好,但是,正如 clang complete plugin page 指定的那样,放置包含路径(或您可能想要传递给 clang 编译器的任何其他标志)的文件必须命名为 @987654323 @ 而不是.clang_completion

    另外,我曾经将选项放在一行,就像我将 .clang_complete 文件的纯内容作为命令行选项传递一样(不知道用 \ 分隔行是否会工作)。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2018-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-16
      • 1970-01-01
      • 2011-10-23
      • 2012-04-26
      • 1970-01-01
      相关资源
      最近更新 更多