【Linux】Ubuntu 18下安装Vim自动补全插件YouCompleteMe(可高速下载安装)

前言

本文写于2020年10月,如果你多年后看见这篇文章,方法可能已经失效,但是请牢记,尽量下载你所处时代的最新版本的软件,会减少很多麻烦。

摆正心态

即便按照本文操作,由于你的系统状态和我的不一样,你依然可能安装失败,这个时候你需要自己慢慢使用Google搜索寻找答案。

安装

使用的是 全新的Ubuntu 18.04 LTS,刚刚安装好系统然后进入终端的root下操作。注意,系统版本非常重要!对应的是vim8和Python3.6.

注意!再次强调本教程在刚刚安装好的Ubuntu18测试有效,如果你之前进行过其他配置,完全按照本教程操作,可能会遇到未知错误!这也是不可避免的!请自行解决。

1 安装vim 和 git

这个很简单,我们只需要输入vim,系统就会提示你进行安装,再输入第一条命令apt install vim即可。

输入git按照系统提示进行安装。

2 安装依赖软件

输入命令:

sudo apt-get install build-essential cmake python-dev python3-dev

3 安装Vundle

一款vim插件管理工具,需要使用git clone进行安装。

输入命令,这里注意我们存的目标文件位置~/.vim/bundle/Vundle.vim
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim

但是不建议直接这样做,因为GitHub访问太慢。

方法一:我们需要使用Google的Github加速插件,然后将地址https://github.com/VundleVim/Vundle.vim.git拿出来输入浏览器地址栏中,获得加速地址,可以使用Google浏览器的应用商店搜索。

还是推荐方法二,对于GitHub地址https://github.com/VundleVim/Vundle.vim.git,我们在github.com后面加上.cnpmjs.org,变成https://github.com.cnpmjs.org/VundleVim/Vundle.vim.git,然后再下载,会快很多。

此处参考:解决git clone速度慢的问题

输入cd ~进入家目录,再输入vim ~/.vimrc进行vim配置,让vim安装该插件。注意,没有.vimrc文件也没事,会自动创建的,如果你不会vim基本操作,请自学。

将以下内容作为.vimrc文件的内容:

set shell=/bin/bash
 
set nocompatible              " be iMproved, required
filetype off                  " required
 
" set the runtime path to include Vundle and initialize
  set rtp+=~/.vim/bundle/Vundle.vim
  call vundle#begin()
" alternatively, pass a path where Vundle should install plugins
" call vundle#begin('~/some/path/here')
" let Vundle manage Vundle, required
Plugin 'VundleVim/Vundle.vim'
 
" The following are examples of different formats supported.
" Keep Plugin commands between vundle#begin/end.
" plugin on GitHub repo
" All of your Plugins must be added before the following line
call vundle#end()            " required
filetype plugin indent on    " required
" To ignore plugin indent changes, instead use:
"filetype plugin on
"
" Brief help
" :PluginList       - lists configured plugins
" :PluginInstall    - installs plugins; append `!` to update or just :PluginUpdate
" :PluginSearch foo - searches for foo; append `!` to refresh local cache
" :PluginClean      - confirms removal of unused plugins; append `!` to auto-approve removal
"
" see :h vundle for more details or wiki for FAQ
" Put your non-Plugin stuff after this line

然后在vim下输入命令:PluginInstall安装插件,再输入bdelete删除高速缓存关闭窗口,之后退出。

4 安装YouCompleteMe

4.1 下载源文件包

下载源文件包

cd ~/.vim/bundle
git clone https://github.com/Valloric/YouCompleteMe.git

老样子,记得在github.com后面加上.cnpmjs.org,加速下载,上面提及以后不再重复。

4.2 下载相关依赖

然后进入YouCompleteMe目录下,之后再获取最新版本的相关依赖文件

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

此处,先不要运行第二条命令,因为直接运行会非常慢

我们按照以下步骤做

  1. 运行git submodule update --init,这个过程需要等待一下。
  2. 输入vim .gitmodules
    在这里插入图片描述
    将里面所有的github.com都加上.cnpmjs.org,然后保存退出。
  3. 输入git submodule sync更新子项目的url
  4. 输入git submodule update --init --recursive
    这个时候,如果提示
    fatal: Needed a single revision Unable to find current revision in submodule path 'third_party/requests_deps/certifi'

我们需要再做一些操作,注意关注结尾的third_party/requests_deps/certifi,你的和我的可能不一样,请使用自己的提示完成下面的步骤。

输入rm -rf <你显示的结尾>,这里我输入rm -rf third_party/requests_deps/certifi

参考:git submodule update failed

然后再输入git submodule update --init --recursive就没有问题了。

4.3 编译和配置支持自动补全的语言

若使用C/C++,可以安装C族,运行./install.py --clang-completer;若安装全部支持的语言,可以输入./install.py --all

这里使用前者,速度较快,安装全部用不到的话也没必要。

完成之后,在 vim 的配置文件 ~/.vimrc 中添加一行
(在call vundle#begin() 和 call vundle#end() 之间)

call vundle#begin()
. . . 
Plugin 'Valloric/YouCompleteMe'
. . .
call vundle#end()

保存,之后安装插件,在vim下输入:PluginInstall,前面提及过,不再细说。

之后运行vim,提示YouCompleteMe unavailable: requires Vim 8.1.2269+,看来还需要升级vim版本阿!。

警告! 部分用户反应卸载vim后无法再安装,博主目前没有遇到类似问题,因此请谨慎卸载,可以先自行查阅直接升级vim的相关操作,或者,直接用Ubuntu20吧,vim版本应该足够了

  1. 删除当前的所有vim版本
dpkg -l | grep vim
sudo apt-get remove vim vim-runtime vim-tiny vim-common 

注意,第二条命令,是根据第一条命令的结果设置的,博主第一条命令显示的是这4个,所以删除这几个。

  1. 安装新的vim
sudo add-apt-repository ppa:jonathonf/vim
sudo apt-get update
sudo apt-get install vim

然后,就可以愉快使用vim了

5 增强功能

.vimrc文件末尾加上:

let g:ycm_show_diagnostics_ui = 0
let g:ycm_server_log_level = 'info'
let g:ycm_min_num_identifier_candidate_chars = 2
let g:ycm_collect_identifiers_from_comments_and_strings = 1
let g:ycm_complete_in_strings=1
let g:ycm_key_invoke_completion = '<c-z>'
 
noremap <c-z> <NOP>
 
let g:ycm_semantic_triggers =  {
			\ 'c,cpp,python,java,go,erlang,perl': ['re!\w{2}'],
			\ 'cs,lua,javascript': ['re!\w{2}'],
			\ }

接下来可能还会报错:
NoExtraConfDetected: No .ycm_extra_conf.py file detected ………………

博主这里报错是不能找到.ycm_extra_conf.py,因此我们需要查找一下,发现它在目录~/.vim/bundle/YouCompleteMe/third_party/ycmd中,因此我们需要再配置一下,加上一条

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

保存退出,之后就可以愉快使用vim编辑C,CPP文件啦!

重要参考资料:在vim中配置最新YouCompleteMe代码自动补全插件

6 可能的错误 和 其他资料

按照此教程,你大概率不会一帆风顺,还会有各种问题……这里只能列出一些我见过的问题。

  1. SyntaxError: invalid syntax when import vimsupport
    在你的vim中运行:py3 print( __import__( 'sys' ).version ),默认python版本必须大于3.5,这个很难改好,会出现各种问题,直接按照Ubuntu 18就不会有这个问题了,更低版本的Ubuntu是默认3.5.

参考资料

  1. vim 按照插件
    如何在 Linux 上使用 Vundle 管理 Vim 插件
  2. 子模块git clone加速问题
    github克隆项目中的子模块submodule时遇到的问题
    彻底解决git clone以及 recursive慢的问题

核心问题总结

工具链的版本匹配

对于YouCompleteMe来说,它以及它依赖的一整套工具链,对软件版本有很高要求,一点点不匹配就不能正常运行,因此,需要充分把握这一点。

  • Python3 >= 3.6
  • Vim >= 8.1
  • 各种依赖……

总之,这是个与时俱进的插件了。

Github快速下载

文章中已经提及了方法,不再说明。但是这一点很重要,因为在中国下载太慢了,效率极低,使用一些策略可以将下载效率提高10倍以上

不仅仅是当前文件下载,还有其相关依赖下载,也都需要提速,不过依赖的主体文件下载,不知道如何提速,该url应该隐藏在某个文件里,回头找一找。

  • 5
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

XV_

感谢您的认可,我会继续努力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值