为Vim完成Clang

时间:2011-04-12 20:09:14

标签: vim clang

我已将clang_complete.vim复制到插件中,但当我在某个变量后键入.时,它会说:

  

未找到模式

我搜索了这个问题,有人说我应该配置g:clang_complete_auto:g:clang_complete_copen:。我怎么能这样做?

5 个答案:

答案 0 :(得分:26)

我遇到了同样的问题并通过将以下内容添加到我的.vimrc

来解决了这个问题
let g:clang_user_options='|| exit 0'

答案 1 :(得分:11)

尝试打开示例文件

vim /tmp/sample.cpp

并输入一些cpp代码

#include <iostream>

int main() {
  std:: // <-- this should complete
}

请注意,您实际上需要包含标头,因为完成是使用编译器完成的。如果这样可行,但你的项目仍然一直说“Pattern not found”,那么clang ++可能无法编译你的项目。编译代码时是否使用任何-I开关?将它们添加到项目目录中名为.clang_complete的文件中。

对我来说,这适用于我的.vim/plugin文件夹,其中只包含可供下载的clang_complete.vim文件:

$ find .vim
.vim
.vim/plugin
.vim/plugin/clang_complete.vim

...但在此问题报告https://github.com/Rip-Rip/clang_complete/issues/39中,建议您可能需要更多文件(其他文件位于git repo中)。

答案 2 :(得分:4)

以下使用clang version 3.0 (tags/RELEASE_30/final)在Cygwin上为我工作,以及在Windows上使用the Clang build instructions以及从主干检出的版本(通常是稳定的,如我所读)昨天({ {1}})并使用Visual Studio 2010构建:

clang version 3.1 (trunk 154056)

请注意,Windows版本可能存在偶发的断言失败但工作正常,但不完全像Cygwin版本。猜测它与使用MSVC和GCC头文件有关。

Cygwin版本有一个初始" clang_complete let g:clang_complete_auto = 0 let g:clang_complete_copen = 1 " :h clang_complete-auto_user_options if has('win32unix') " Cygwin " Using libclang requires a Vim built with +python let g:clang_use_library = 1 " Mit der Option "gcc" kriege ich Fehler. " Remove "gcc" option as it causes errors. let g:clang_auto_user_options='path, .clang_complete' elseif has('win32') " Windows let g:clang_auto_user_options='path, .clang_complete' let g:clang_use_library = 1 let g:clang_library_path='D:\Sourcen\LLVM\build\bin\Debug' endif ,但无论如何都可以。

答案 3 :(得分:1)

您是否尝试通过在命令行上显式调用Clang来编译Vim之外的代码?

我的代码遇到了同样的问题,但事实证明,由于使用了MPI库(mpich2),Clang无法编译我的代码。也许类似的问题导致Clang在您的情况下失败?在我的例子中,如果我删除MPI依赖项,一切正常,例如:

#include <iostream>
#include <string>

int main() {
    std::string myString("test string");
    std::cout << myString.size() << std::endl; // After typing the dot, I get a list of std::string methods
}

顺便说一句,我仍然在我的MPI代码中错过了clang_complete。有没有人为此找到解决方案?

答案 4 :(得分:0)

要配置Vim,您必须找到或创建.vimrc文件:

  

$ vim~ / .vimrc

然后输入:

let g:clang_complete_copen = 1