YouCompleteMe(以下简称YCM)插件的特点不多说,想必大家早已有耳闻。我一直想着有朝一日能用上如此神器,只是苦于其难以安装的特点迟迟不敢动手,直到今天自己动手安装了它,才发现原来有如此捷径。。。
本文只针对使用 Ubuntu 16.04 操作系统的童鞋,其他操作系统的可以具体参考说明文档,说不定会有惊喜哦。。。
Make sure you have Vim 7.4.1578 with Python 2 or Python 3 support. Ubuntu 16.04 and later have a Vim that’s recent enough. You can see the version of Vim installed by running vim –version. If the version is too old, you may need to compile Vim from source (don’t worry, it’s easy).
如上所说,你应该有vim7.4 的版本,同时支持python2或者python3。
PS:通过终端输入vim --version
就能查看版本号以及是否支持python。
不出意外的话,通过Ubuntu下的apt工具安装的vim**本身就符合要求**;如果运气实在太差,vim不满足需求。。。也可以通过下载编译最新版的vim。(注意自己编译vim的时候要加上Python2或者Python3的支持,可以参考如下文章。
[ubuntu]自己编译安装vim 8.0的方法
用vim的童鞋应该比较清楚这款名叫Vundle的插件,方便的很。具体安装过程就不在这说了,可以参考下面的文章。
vim插件管理器:Vundle的介绍及安装(很全)
注意这一步的安装并不是安装完就能直接使用的,顶多算是安装了一半,也算是个坑。。。
方法1
首先,在你的 * .vimrc * 文件中加入 Plugin 'Valloric/YouCompleteMe'
这一句,如下图中最后一行所示。
然后,打开vim输入 :PluginInstall
,开始下载安装YCM。
这个过程有点久的,我还一度以为程序卡住了,大概10分钟到20分钟吧。如果很久后还是没有动静,估计就是网速问题,可以参考方法2。
方法2
一步一步带你安装史上最难安装的 vim 插件 —— YouCompleteMe一文提到了使用git方法进行安装:
cd ~/.vim/bundle
git clone --recursive https://github.com/Valloric/YouCompleteMe.git
git submodule update --init --recursive
安装结果
我是用第一种方法安装的,安装后打开vim,下方出现提示。
提示说了,ycm_core没有找到。没找到是正常的,找到了才有问题嘞。
为了增加对C家族的语义补全,网上的许多教程在这一步之前还需要下载安装libclang,然后使用cmake工具进行一大波操作(创建文件夹、编译makefile、build。。。估计这也是之前YCM安装难的原因了)。而本文中没有这一步,这也是我开头所说的Ubuntu 16.04系统安装YCM的捷径之所在(Ubuntu 14好像就不适用了,只能走常规路线。。。)
那接下来该干嘛呢?首先,安装需要的工具
sudo apt install python-dev python3-dev
sudo apt install build-essential cmake
不要怕!这些工具你不会亲自用到,有专门的程序给你搞定了。进入YCM的软件根目录:
cd ~/.vim/bundle/YouCompleteMe/
sudo ./install.py --clang-completer
第二句中 --clang-completer
是添加对C家族语言的语义补全支持。如果还需要支持其他的语言,可以参考YCM的说明文档
如果你要安装对各种语言的支持,也可以输入
sudo ./install.py --all
经过一段时间的等待,你的YCM其实就已经安装ok了。
.ycm_extra_conf.py
文件如果安装好YCM后,你打开.c文件,发现它还不能工作,压根不能自动补全有没有。这个时候你还差个最后一步,在当前项目下添加补全的配置文件。配置文件?怎么个配置法?这么麻烦?搞什么哦?淡定。。其实很简单,已经有现成的给你了。.ycm_extra_conf.py下载,下载下来放在项目目录下就可以自动补全了。这操作,是不是6的很。
不过还有一个小麻烦,我每个项目里都得放一个这文件?这。这。。。
其实可以设置一个全局的文件,如果找不到当前工程下的配置文件,则默认使用它。怎么个设置法呢?很简单,把你的.ycm_extra_conf.py
文件放在合适的位置,我放在了~/.vim/.ycm_extra_conf.py
下,在你的vim配置文件.vimrc
中加入
let g:ycm_global_ycm_extra_conf='~/.vim/.ycm_extra_conf.py'
这样,在你写一些小文件用来测试的时候就很方便了哈哈哈。
使用的时候会发现YCM只能在输入. ->
这些命令的时候开始基于语义的代码补全。煮个栗子,在.c文件中输入printf函数,发现并没有基于语义的提示,这怎么能忍?然后就有了以下的解决方法。在你的vim配置文件.vimrc
中加入如下代码
let g:ycm_semantic_triggers = {
\ 'c,cpp,python,java,go,erlang,perl': ['re!\w{2}'],
\ 'cs,lua,javascript': ['re!\w{2}'],
\ }
上面的['re!\w{2}']
是正则表达式,其中的数字可以改动,它的意思是在你输入空格后的第几个字符后自动触发基于语义的提示。由于现在的YCM已经是异步的架构,所以使用基于语义的自动补全功能也是一点也不卡。
对于YCM的配置在这就讲这些,还有更多内容可以参考下文。
YouCompleteMe 中容易忽略的配置
因为YCM内部有了install.py文件,将之前编译clang等等的事情都承包了,所以大大减小了安装时候的难度。当然,这只是适用于一部分系统,如果按照本文的方法不幸安装失败,也大可不必太伤心。按照常规操作一步一步,照样也能安装YCM。最后,祝君好运 ^_^
。