第一步,通过配置文件【.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】。改称如下图所示。
这下就可以顺利通过了。不过安装还是不会顺利。报错还在继续。
报错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的版本就更新了,如下图所示。
改了之后这个错就可以顺利通过了,不过还没结束。
搞错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版本比较低达不到插件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版本。如下图所示。
到此,插件YouCompleteMe就可以运行了,如下图所示。
PS: 本文的总结只是本人所经历的,不一定适合所有人,请各位在安装YCM的时候一定要耐心,仔细思考错误的原因,才能够真正的解决问题。本人才疏学浅,如果有什么表述不清楚或者有错误的地方,请各位看过本文的同学留言指出,交流学习,互相进步。