Vim 的 Clang Complete
Posted
技术标签:
【中文标题】Vim 的 Clang Complete【英文标题】:Clang Complete for Vim 【发布时间】:2011-08-04 04:51:53 【问题描述】:我将clang_complete.vim
复制到插件,但是当我在某个变量后键入.
时,它说:
找不到模式
我搜索了这个问题,有人说我应该配置g:clang_complete_auto:
和g:clang_complete_copen:
。我该怎么做?
【问题讨论】:
相关:***.com/q/1115876/1968 从什么时候开始对编辑提出的问题被视为题外话了? 【参考方案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++,效果很好。以上是关于Vim 的 Clang Complete的主要内容,如果未能解决你的问题,请参考以下文章
使用 ninja 和 clang++ 时 vim 中的快速修复列表