Vim代码自动补全的神器:YouCompleteMe

YouCompleteMe 是一款非常强大的代码自动补全插件。我原先用的是 clang-complete,然后在最近有好几个月没有写东西了,系统一直更新更新到后面 clang-complete 出了一些问题,于是就开始找有什么其它的自动补全插件,然后就听说了 YouCompleteMe 的大名,如果想有比较详细的了解,可以参考它的官方文档,我在这里只是介绍一部分内容以及如何安装。

首先我们来看一段它的演示,你马上就会了解到这是有多强大了!

cpp-demo-of-youcompleteme

这整个过程是没有使用任何快捷键的,那些提示框的出现完全是自动的。你还会发现,YouCompleteMe 识别关键字的方法不是基于字串,而是基于子序列。而且,在 C++ 中写了 .-> 或者 :: 这样的运算符之后,它会提示你这里面有什么成员,甚至提示这个函数有什么参数!

好我们现在再来看一个例子

go-to-definition-of-youcompleteme

这是 GoToDefinition 功能,如果你把这个设置成快捷键,Vim 就有像 Visual Studio 之类的 IDE 的功能了!

介绍完这些之后我们来说说怎么去安装它,YouCompleteMe(后面我们就写成YCM)和其它 Vim 插件有些不同,它在下载完之后是需要手动编译的,由于我的系统是 Linux,因此我在这里只介绍在 Linux 上的安装方法

安装准备

  • 确保你的 Vim 版本高于 7.3.584,并且有 python2 支持(注意不是 python3)。你可以运行 vim --version 来查看,如果有 python2 支持的话会有 +python 的标志,否则你需要重新编译你的 Vim
  • 安装 Vundle 插件,这是一个用于管理 Vim 插件的插件
  • 安装 cmake

安装

首先你需要在 .vimrc 里添加如下代码

然后打开 vim(如果你刚刚用 vim 编辑的那需要退出后再打开),在正常模式输入

现在你需要等 Vundle 下载完 YCM,这可能会花比较久的时间,请耐心等待

接着在下载完了后开始编译

--clang-completer 是提供 C-family 语言支持的,不需要可以将其去掉,默认情况下它会去下载 clang,如果你已经有了 clang,加上 --system-libclang

顺便一提,如果你需要 C# 的补全,加上 --omnisharp-completer

我在编译完了之后 C-family 语言支持的东西是在 ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ 里面的,似乎没法找到,于是我做了个符号链接将其连接到 ~/.vim/bundle/YouCompleteMe

YCM 的默认配置文件是在 ~/.vim/bundle/YouCompleteMe/cpp/ycm/.ycm_extra_conf.py 下,我在 .vimrc 里面添加了一句直接指定它默认的位置

另外,YCM 默认似乎是没有支持标准库的补全,我在 .ycm_extra_conf.py 找到了下面这段并且稍微修改了一下

到此为止,YCM 差不多就可以用啦~

想要知道更多的内容可以参考

Miskcoo's Space,版权所有丨如未注明,均为原创
转载请注明转自:http://blog.miskcoo.com/2015/12/vim-plugin-youcompleteme

miskcoo

顺利从福州一中毕业!感觉大学周围都是聚聚十分可怕QAQ 想要联系的话欢迎发邮件:miskcoo [at] gmail [dot] com

4 thoughts on “Vim代码自动补全的神器:YouCompleteMe

Leave a Reply

Your email address will not be published. Required fields are marked *

NOTE: If you want to add mathematical formulas, use $$ to wrap them. For example, use $$x_0$$ to get $$x_0$$.

If you want to get a newline, hit Enter twice, that is, use double newlines to get a newline.