在CentOS 8上安装YouCompleteMe插件

  • 关于YouCompleteMe插件
  • 安装YCM所要注意的事项
  • 确认所需的依赖条件
  • 配置对应的条件
  • 安装YCM
  • 安装后使用
  • 参考


关于YouCompleteMe插件

YouCompleteMe(简称YCM,下文以此代称该插件)是一个功能强大的补全插件,很大程度上提升了在vim上编写代码的体验。YCM可以支持多种语言,如C/C++,java等等,可以适应不同的开发需要。

作为一个刚刚入坑不久的新人,笔者有意想尝试一下YCM。虽然网上已经有众多YCM的安装流程,以及一些常见错误的解决方案。但是在实际的安装过程中,我还是遇到了没能查到解决办法的问题,故在综合了网上一些教程后攥写本文。如有不妥,望斧正。

安装YCM所要注意的事项

经历这次的安装过程后,我得出一个结论:即YCM安装失败最可能是因为依赖包没安装好。一旦出现这样的状况,报错信息将会淹没你的整个安装过程,有的还不好确认到底是什么地方出错。因此,有必要在开始安装之前就确保需要的包已经安装完毕。

确认所需的依赖条件

在GitHub上的YCM项目说明了当前版本插件需要什么依赖条件,实际安装时应按照其给出的条件。笔者安装的时候,条件对应如下:

  1. GCC版本在8以上
  2. Clang版本在7以上
  3. 需要安装Vundle插件管理
  4. 需要安装python3的开发包支持,python版本需要在3.6以上
  5. 需要安装cmake
  6. 需要vim版本在8.1.2269以上

配置对应的条件

首先确认GCC和Clang的版本,在tty输入:

sudo gcc --version
sudo clang --version

笔者遇到的一个最大问题就是没有安装clang(所以说一定要仔细配置)。因此,如果发现版本不符合要求或缺少的,则需要卸载后再安装合适的版本。

Vundle是GitHub上的项目,可以管理插件,在tty输入:

git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim

当然,clone到哪里是自己决定的,可以把控,其后的一些目录也要跟着改变即可。

确认python的版本,在tty输入:

sudo python3 -V

由于GitHub上是按照Ubuntu的命令来做的,相关的文件名也有所不同,如python-dev在CentOS和红帽这些系统上就是python-devel,其它也是类同。记得还要再安装cmake(如果事先没有安装)。在tty输入:

sudo yum -y install python36-devel.x86_64 cmake

此处文件的名字(如36)也跟对应的版本有关,应根据实际情况确定。

查看vim的版本,CentOS 8自带的应该是8.0版本,是不能够使用的,所以需要卸载后安装适合的。vim可以在https://github.com/vim/vim/releases处下载合适的版本安装。安装过程也可参考。

安装YCM

首先下载YCM的源码,在tty输入:

git clone https://github.com/Valloric/YouCompleteMe.git ~/.vim/bundle/YouCompleteMe
cd ~/.vim/bundle/YouCompleteMe

此时还不能够直接安装,因为拉下来的仓库还有子仓库,所以需要进一步clone子仓库的文件才完整,继续输入:

git submodule update --init --recursive

攥写YCM的配置文件,这里直接用了examples文件夹的默认配置,位于~/.vim/bundle/YouCompleteMe/third_party/ycmd/examples/.ycm_extra_conf.py。

配置~/.vimrc文件,其中填入:

" 设置不兼容vi
set nocompatible 
filetype off
" 设置包括vundle和初始化相关的runtime path
set rtp+=~/.vim/bundle/Vundle.vim
" 插件的初始化
call vundle#begin()
Plugin 'Valloric/YouCompleteMe'
call vundle#end()
" 设置默认的配置文件,可以按照上文攥写的位置来修改,笔者修改了位置
let g:ycm_global_ycm_extra_conf='~/.vim/bundle/YouCompleteMe/.ycm_extra_conf.py'

完成上述工作就可以开始安装了,在当前目录输入:

sudo python3 ./install.py --clang-completer --system-libclang

此处笔者仅使用C/C++的补全,所以采用–clang-completer,如果全都要就可以按照GitHub上所说的去做,不再详述。

此时,安装过程中可能会报错,问题出在文件~/.vim/bundle/YouCompleteMe/third_party/ycmd/clang_archives/libclang-12.0.0-x86_64-unknown-linux-gnu.tar.bz2上。因此,需要重新下载这个文件并将其替代掉。可以在https://github.com/ycm-core/llvm/releases下载替换。

当然,如果不翻墙下载速度可能与乌龟爬行无异,所以建议有其它源的采用其它。

同时,在这里如果没有安装clang,此后的安装过程是不会报错的,但是却依然使用不了YCM。打开vim会提示The ycmd server SHUT DOWN,网上也没能找到合适的解决方案,如果有类似的问题可以检查自己的依赖包。

这些工作都做好之后,就可以重新开始安装YCM了。

安装后使用

随意的创建一个cpp文件,进入查看情况:

Centos yum安装rabbitmq centos yum安装已加载插件_bundle


可以看到已经能够完成补全了,且有错误提示的功能。

至此,YCM的安装已经基本完毕。