Ubuntu18.04基于vim-plug安装YCM

一、引言

最近在研究VNF Internal State Management相关框架的过程中,总结了一点心得,那就是偏计算机方向的硕士和博士,必须要精通至少3门编程语言。其中,c/c++是必须精通的,Java和Python里面可以二选一,剩下一门推荐偏向于后台开发的Golang或者Rust。因为我的研究方向与AI和Container都会沾点边,所以我的选择就是c/c++&Python&Golang了。由于之前的工作都是偏模型和理论,常用python写一些仿真,对于c/c++的使用较少,时间一长就对c/c++生疏了,接下去打算多用用c/c++,把丢下的慢慢捡起来。

工欲善其事必先利其器,熟练掌握一门语言需要一个好的IDE。本研究领域差不多全部的开源平台都是基于Linux,考虑到之后会对其中的一些平台进行二次开发,因此在linux平台下找一个好的IDE就是第一步了。之前一直使用Server版的Linux,而Server版的Linux下,vim当然就是最好的IDE了。要用好vim,肯定需要不同vim plugin的支持,在网上看了一圈,最终选择vim-plug来管理vim中的插件。本文就是记录下vim-plug的安装及使用,并记录下插件中比较难装的YCM的安装及使用。

二、推荐

基于vim-plug安装YCM其实没啥难度,就是其中有一些坑,如果装之前能仔细阅读官方的文档的话,就能避免大部分的坑,因此推荐读官方的文档,如果发现官方文档里面没有的坑,再来这看看有没有遗漏的步骤。
vim-plug
YCM

三、vim-plug

安装

vim-plug的安装非常简单,一行命令完事。或者也可以将plug.vim中的内容复制到~/.vim/autoload/plug.vim中。

curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
    https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
使用

使用vim-plug管理vim插件非常简单,具体命令见vim-plug command。我们需要安装YCM插件,只需要在~/.vimrc文件中加入如下。

call plug#begin('~/.vim/plugged')
Plug 'Valloric/YouCompleteMe', { 'do': './install.py --clang-completer',  'for': ['c', 'cpp'] }
call plug#end()

其中'do'后面跟的命令是指YCM插件在使用vim-plug安装后,还需要执行的额外的命令(该命令在后面有解释),这也是YCM插件安装起来麻烦的原因。‘for’后面跟的内容是指YCM插件只在打开c和cpp文件时才会被激活。
接下来就可以在vim命令行中运行PlugInstall命令安装YCM了?Definitely No!不然我也不会写这篇博客了。

四、YCM插件

YCM插件能让vim像那些IDE一样自动补全代码,跳转等等,它通过预先编译,根据编译的结果来推测需要补全的内容。
在运行安装脚本之前,需要解决一些依赖问题,具体如下:

  1. 确保vim版本在7.4.1578以上。通过vim --version来查看。ubuntu18默认为vim8.1。
  2. 确保vim对python和python3的支持。也通过vim --version来查看,在python和python3前面有加号,说明已经支持了。
    ubuntu18默认安装python3,且vim支持python3,但是未安装python且vim不支持python2,因此需要安装python2且从源码重新编译vim。
    安装python2的时候,需要从源码进行安装,并进行额外配置。
mkdir python2-source && cd python2-source
wget https://www.python.org/ftp/python/2.7.15/Python-2.7.15.tgz
tar -xvf Python-2.7.15.tgz
cd Python-2.7.15/
sudo apt install zlib1g-dev  # YCM需要zlib库支持
./configure --with-zlib --enable-shared --enable-unicode=ucs2
make -j
sudo make install

安装完python2,还需要python中的urllib3。

pip install urllib3 --user

接下来重新编译安装vim,使其支持python和python3

sudo apt purge --auto-remove vim  # 卸载现有vim
sudo apt install python-dev python3-dev
git clone https://github.com/vim/vim.git
cd vim
./configure --with-features=huge \ 
--enable-python3interp \
--enable-pythoninterp \
--enable-perlinterp \
--enable-multibyte \
--enable-cscope \
--with-python-config-dir=/usr/lib/python2.7/config-x86_64-linux-gnu/ \
--with-python-config-dir=/usr/lib/python3.6/config-3.6m-x86_64-linux-gnu/ \
--prefix=/usr/local/vim  # vim安装位置
make -j
sudo make install
export PATH="$PATH:/usr/local/vim/bin  # 加入vim可执行文件的路径
  1. 安装剩余依赖库
sudo apt install build-essential cmake
sudo apt install clang libclang-dev  # clang库帮助实现语义支持
  1. 至此,依赖都解决了,可以在vim命令中运行PlugInstall来安装YCM插件了,YCM插件大约有500MB,安装期间需要不停地git clone,所以安装可能会比较慢。

  2. 最后,还需要配置下YCM才可以正常使用,官方提供了一个默认的配置文件,号称可以解决99%的需求。在.vimrc文件中加入一行进行设置即可。YCM的配置非常丰富,具体可参考YCM

let g:ycm_global_ycm_extra_conf='~/.vim/plugged/YouCompleteMe/third_party/ycmd/.ycm_extra_conf.py'
tips

如果执行PlugInstall来安装YCM过程中还有其他的错误,可以退出vim控制台来查看YCM的安装日志,解决了问题之后,进入~/.vim/plugged/YouCompleteMe找到install.py脚本重新运行./install.py --clang-completer即可。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270