第一步,通过配置文件【.vimrc】中使用的包管理器进行插件YouCompleteMe的安装。

" use vim-plug to manage vim plugins
call plug#begin()
Plug 'ycm-core/YouCompleteMe'
call plug#end()

上面使用的包管理器是vim-plug,将上面的代码写入到【~/.vimrc】之后,依次执行命令【:w】、【:source $MYVIMRC】和【PlugInstall】,即可完成插件YouCompleteMe的安装。

第二步,上一步只是把YouCompleteMe安装好了,此时还是不能够使用的,需要下载一些对应语言的编译器,才能够使用。之前多次安装这个插件,一次也没有成功,期间参考了很多的资料,包括b站的视频,博客,按照上面的描述一步一步的安装,总是出现了不可解决的错误,导致最后不得不放弃,多年之后再次尝试,发现还是按照github上的说明比较靠谱,下面的步骤记录的是在Ubuntu18.04上进行安装,此时的日期是2021-03-27,以后的安装步骤有可能不相同,不过github总是靠谱的。

先安装一些前置软件,命令如下所示。

apt install build-essential cmake vim-nox python3-dev # Install cmake, vim and python
apt install mono-complete golang nodejs default-jdk npm # Install mono-complete, go, node, java and npm

之后用python3运行YouCompleteMe中的install.py文件,命令如下图所示。

cd ~/.vim/plugged/YouCompleteMe/
python3 install.py --all

之后会自动进行安装,不过安装的过程是不会太顺利的,在我安装的过程中出现了下面的报错。
报错1:Your C++ compiler does NOT fully support C++17。
这个错还是比较好解决的,通过查阅资料发现我的g++版本比较低,是7.5的版本,需要下载g++8的版本才能够支持c++17,命令如下所示。

sudo apt install g++-8
sudo rm /usr/bin/g++
sudo ln -s /usr/bin/g++-8 /usr/bin/g++

通过上面的命令就可以解决这个问题了。
报错2:cannot find package “golang.org/x/tools/gopls@v0.5.1” in any of /usr/lib/go-1.10/src/golang.org/x/tools/gopls@v0.5.1,这个错显然是找不到包,这个错改了很长时间。
先可以github上下载golang.org,github地址【https://github.com/MXi4oyu/golang.org】,命令如下所示。

cd /usr/lib/go-1.10/src/
sudo git clone https://github.com/MXi4oyu/golang.org.git
cd /usr/lib/go-1.10/src/golang.org/x/
sudo rm -rf tools # 这个tools比较旧,所以删掉换一个新版本的

从github上下载tools,github地址【https://github.com/golang/tools】,命令如下所示。

cd /usr/lib/go-1.10/src/golang.org/x/
sudo git clone https://github.com/golang/tools.git

这下安装的tools是含有【gopls】这个目录的。

此时如果继续执行【python3 install.py --all】还是会报错,但其实已经有gopls了,这时需要改一改YouCompleteMe的相关代码,需要修改的文件是【~/.vim/plugged/YouCompleteMe third_party/ycmd/build.py】。改称如下图所示。

镜像 安装vim 没有yum_ubuntu


这下就可以顺利通过了。不过安装还是不会顺利。报错还在继续。

报错3:具体是什么忘了,大概就是说go的版本低了(当时的版本是1.10),这个好解决,直接用【apt install】下载一个高版本的就可以了。命令如下所示。

sudo apt install golang-1.13
sudo rm /usr/bin/go
sudo ln -s /usr/lib/go-1.13/bin/go go

这下go的版本就更新了,如下图所示。

镜像 安装vim 没有yum_linux_02


改了之后这个错就可以顺利通过了,不过还没结束。

搞错4(只是个警告,不改应该也可以):npm WARN tern_runtime No repository field,这种警告可以进入到package.json文件中进行一些修改,命令如下所示。

cd ~/.vim/plugged/YouCompleteMe/third_party/ycmd/third_party/tern_runtime
vim package.json

在package.json文件中添加【“private”: true】就可以把警告消除了。如下图所示。

镜像 安装vim 没有yum_vim_03

到此就可以成功安装了。

不过,可能会出现vim版本比较低达不到插件YCM的要求从而报错【YouCompleteMe unavailable: requires Vim 8.1.2269+.】,这样也好解决,从github上重新下最新版本的vim即可。命令如下所示。

cd /usr/local/share
sudo git clone https://github.com/vim/vim.git
cd vim/src
sudo ./configure --with-features=huge \
--enable-multibyte \
--enable-rubyinterp=yes \
--enable-pythoninterp=yes \
--enable-python3interp=yes \
--prefix=/usr/local/vim82

之后make和make install一下,命令如下所示。

sudo make
sudo make install

在/usr/bin目录下建立符号链接,命令如下所示。

sudo ln -s /usr/local/vim82/bin/vim /usr/bin/vim82

查看一下vim版本。如下图所示。

镜像 安装vim 没有yum_镜像 安装vim 没有yum_04


到此,插件YouCompleteMe就可以运行了,如下图所示。

镜像 安装vim 没有yum_github_05


PS: 本文的总结只是本人所经历的,不一定适合所有人,请各位在安装YCM的时候一定要耐心,仔细思考错误的原因,才能够真正的解决问题。本人才疏学浅,如果有什么表述不清楚或者有错误的地方,请各位看过本文的同学留言指出,交流学习,互相进步。