在CentOS 8上安装YouCompleteMe插件
- 关于YouCompleteMe插件
- 安装YCM所要注意的事项
- 确认所需的依赖条件
- 配置对应的条件
- 安装YCM
- 安装后使用
- 参考
关于YouCompleteMe插件
YouCompleteMe(简称YCM,下文以此代称该插件)是一个功能强大的补全插件,很大程度上提升了在vim上编写代码的体验。YCM可以支持多种语言,如C/C++,java等等,可以适应不同的开发需要。
作为一个刚刚入坑不久的新人,笔者有意想尝试一下YCM。虽然网上已经有众多YCM的安装流程,以及一些常见错误的解决方案。但是在实际的安装过程中,我还是遇到了没能查到解决办法的问题,故在综合了网上一些教程后攥写本文。如有不妥,望斧正。
安装YCM所要注意的事项
经历这次的安装过程后,我得出一个结论:即YCM安装失败最可能是因为依赖包没安装好。一旦出现这样的状况,报错信息将会淹没你的整个安装过程,有的还不好确认到底是什么地方出错。因此,有必要在开始安装之前就确保需要的包已经安装完毕。
确认所需的依赖条件
在GitHub上的YCM项目说明了当前版本插件需要什么依赖条件,实际安装时应按照其给出的条件。笔者安装的时候,条件对应如下:
- GCC版本在8以上
- Clang版本在7以上
- 需要安装Vundle插件管理
- 需要安装python3的开发包支持,python版本需要在3.6以上
- 需要安装cmake
- 需要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文件,进入查看情况:
可以看到已经能够完成补全了,且有错误提示的功能。
至此,YCM的安装已经基本完毕。