Ubuntu18.04安装YouCompleteMe代码补全插件

1,198 阅读2分钟

前言

最近钟情于使用 VIM 来学习,所以开始探索各种插件,不出意外地便认识了代码补全的神器插件 —— YCM (YouCompleteMe) ,于是开始安装,但是安装过程中,出现了各种各样的问题,并且在不科学上网的情况下,其实这个插件的安装在国内安装是很难受的,不过经过几番探索,还是成功安装了,以下记录安装过程,以防忘记。

Github的镜像源

在很多情况下,从 Github 上克隆仓库是一件很痛苦的事情,那厮磨般让人焦急的速度,实在是让人咬牙切齿,对于这样,网上也有很多办法,不过我更喜欢用镜像站点的方式,直接用 github.com.cnpmjs.org 替换克隆仓库连接中的 github.com ,提神网络下载速度。而这对于我们安装 YCM 是很有用的。

安装Vundle插件

Vundle 是一款Vim插件管理插件,建议安装!

$ cd ~ # home dir
~$ git clone https://github.com.cnpmjs.org/VundleVim/Vundle.vim ~/.vim/bundle/Vundle.vim

命令解释: 使用 git 克隆Vundle.vim插件仓库到本地用户目录下的 .vim/bundle/Vundle.vim 文件夹,如果没有这个目录,会自动创建。

Vundle插件配置

Vundle的官方仓库 : VundleVim

使用 Vim 打开 .vimrc 配置文件 - 如果不存在,那么就创建一个新的,记住要在用户目录下创建,也就是 ~/ .

~$ vim .vimrc
set nu
set tabstop=4
	 
" vundle config
	
set nocompatible
filetype off
	
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
	
Plugin 'VundleVim/Vundle.vim'

call vundle#end()
filetype plugin indent on

保存文件并退出

再次进入 Vim , 在 Vim 的命令行模式下,也就是初进Vim的时候的模式,键入命令安装插件(不要把 : 漏掉了)

:PluginInstall

PluginInstall

开始安装 YouComPleteMe(YCM)

为系统装上 YouCompleteMe 安装所需要的相关工具

  • 安装 Python3-dev
~$ sudo apt-get install python3-dev
  • 安装 cmake
~$ sudo apt-get install cmake
~$ cmake --version # check 检查
  • 安装 nodejs
~$ sudo apt-get install nodejs
~$ nodejs --version # check 检查
  • 安装 go
~$ sudo apt-get install golang-go
~$ go version # check 检查
  • 安装 npm
~$ sudo apt-get install npm
~$ npm --version # check 检查
  • 安装 mono-complete
~$ sudo apt-get install mono-complete
~$ mono --version # check 检查

克隆 YouCompleteMe 仓库到本地

~$ git clone https://github.com.cnpmjs.org/ycm-core/YouCompleteMe ~/.vim/bundle/YouCompleteMe

解决完整性依赖 ( 安装 Submodule [子模块] )

~$ cd ~/.vim/bundle/YouCompleteMe
~/.vim/bundle/YouCompleteMe$ git submodule update --init --recursive 

到了这一步,就会出现第一个问题,下载速度巨慢!!!

如果你在安装子模块的时候类似地卡在这种地方

Cloning into '/root/.vim/bundle/YouCompleteMe/third_party/requests_deps/requests'...

一直克隆不下来,八成就是网络原因,但是国内在不科学上网的情况下这样的等待是漫长的,所以我们可以手动下载我们的子模块:

~/.vim/bundle/YouCompleteMe$ git clone https://github.com.cnpmjs.org/psf/requests.git third_party/requests_deps/requests

然后继续安装子模块,继续解决依赖:

~/.vim/bundle/YouCompleteMe$ git submodule update --init --recursive

如果又在哪个包卡住了,那么就再手动下载。 这个时候你可能会问:“怎么确定这个子模块在Github上的位置?和在我们 YCM 插件文件夹中的位置?” 那么我们可以通过 YCM 的原仓库找到答案:

Github愿仓库示意图 那么这个时候,你就可以通过这个链接(类似图中标红)找到这个子模块的原仓库,然后从这个原仓库克隆到本地目标文件夹,而本地目标文件夹就是前面你卡住的那段命令的的路径,也就是 Clone into 后面的那个路径,即:

~/.vim/bundle/YouCompleteMe/third_party/requests_deps/requests

解决完全部依赖之后,就可以开始编译安装 YouCompleteMe

~/.vim/bundle/YouCompleteMe$ python3 install.py --clangd-completer

命令解释: 使用 python3 解释器解释 install.py 文件,并添加 --clangd-completer 参数,参数代表只添加 c/c++ 补全

至此,你的 YCM 插件不出意外已经安装好了,而接下来就是进入 .vimrc 文件配置插件。

首先你要找到 .ycm_extra_conf.py 这个文件,这个文件一般在 YouCompleteMe/third_party/ycmd/ 路径之下,使用:

~/.vim/bundle/YouCompleteMe/third_party/ycmd/$ ls -a

可以查看到这个文件,然后把这个文件放到你喜欢的地方,或者就在这里都可以,我是移动到了用户目录下,然后开始配置.vimrc 文件

let g:ycm_key_invoke_completion = '<c-f>' 
let g:ycm_global_ycm_extra_conf = '~/.ycm_extra_conf.py'  " 你的文件路径
" 代码提示框的高亮配置
highlight PMenu ctermbg=red ctermfg=15
highlight PMenuSel ctermbg=14 ctermfg=16

效果图

效果图

结语

🤪 有任何问题欢迎大家指正! 🌝