【问题标题】:Clang Complete for VimVim 的 Clang Complete
【发布时间】:2011-08-04 04:51:53
【问题描述】:

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

找不到模式

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

【问题讨论】:

标签: vim clang


【解决方案1】:

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

let g:clang_user_options='|| exit 0'

【讨论】:

    【解决方案2】:

    尝试打开一个示例文件

    vim /tmp/sample.cpp
    

    然后输入一些cpp代码

    #include <iostream>
    
    int main() {
      std:: // <-- this should complete
    }
    

    请注意,您实际上需要包含标头,因为完成是由编译器完成的。如果这可行,但您的项目仍然说“找不到模式”,那么 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 中)。

    【讨论】:

      【解决方案3】:

      以下内容让我在 Cygwin 上使用 clang version 3.0 (tags/RELEASE_30/final) 以及在 Windows 上使用 the Clang build instructions 和昨天从主干(通常是稳定的,正如我读过的)签出的版本(clang version 3.1 (trunk 154056))和使用 Visual Studio 2010 构建:

      " 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
      

      请注意,Windows 版本可能会出现零星的断言失败,但可以正常工作,尽管与 Cygwin 版本不完全一样。猜猜这与使用 MSVC 与 GCC 头文件有关。

      Cygwin 版本有一个初始的error: release unlocked lock,但无论如何它都可以工作。

      【讨论】:

        【解决方案4】:

        您是否尝试通过在命令行上显式调用 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。有人找到解决方案了吗?

        【讨论】:

          【解决方案5】:

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

          $ vim ~/.vimrc

          然后输入:

          let g:clang_complete_copen = 1
          

          【讨论】:

          • @dalibocai 你能用一个只有一个文件的小项目进行测试吗?你有其他插件吗?
          • 我在 std::string 上测试它,但它不起作用。我已经删除了所有omni完成文件。我测试了clang++,效果很好。
          猜你喜欢
          • 1970-01-01
          • 2020-01-04
          • 2014-11-13
          • 1970-01-01
          • 2023-03-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多