1、vim-plug的安装
在这里,我使用的是vim-plug对插件进行管理,在linux安装命令如下:
curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
如果在执行上面的命令出现下面的错误时,需要手动的去配置解析地址,
从此处获得解析地址,然后将地址写入到/etc/hosts
文件中。如下图
然后再次执行上面的命令,就能执行成功。
2、vim-plug配置介绍
使用vim-plug安装vim插件的方法与另外一个著名的vim插件管理器Vundle非常相似,只需要在vim配置文件 ~/.vimrc 增加以 call plug#begin(PLUGIN_DIRECTORY) 开始,并以 plug#end() 结束的配置段即可。
下面是一个典型的vim-plug的配置实例,使用了多种vim-plug相关的配置形式。
call plug#begin('~/.vim/plugged')
Plug 'junegunn/vim-easy-align'
Plug 'https://github.com/junegunn/vim-github-dashboard.git'
Plug 'SirVer/ultisnips' | Plug 'honza/vim-snippets'
Plug 'scrooloose/nerdtree', { 'on': 'NERDTreeToggle' }
Plug 'tpope/vim-fireplace', { 'for': 'clojure' }
Plug 'rdnetto/YCM-Generator', { 'branch': 'stable' }
Plug 'nsf/gocode', { 'tag': 'v.20150303', 'rtp': 'vim' }
Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' }
Plug '~/my-prototype-plugin'
call plug#end()
在上面的vim-plug配置中,以 call plug#begin('~/.vim/plugged')
标识vim-plug配置的开始并显式指定vim插件的存放路径为 ~/.vim/plugged;
Plug 'junegunn/vim-easy-align'
使用缩写形式指定了插件在github的地址 (https://github.com/junegunn/vim-easy-align);
Plug 'https://github.com/junegunn/vim-github-dashboard.git'
则用完整的URL指定插件在github的位置;
Plug 'SirVer/ultisnips' | Plug 'honza/vim-snippets'
用 | 将两个vim插件写在同一行配置中;
Plug 'scrooloose/nerdtree', { 'on': 'NERDTreeToggle' }
使用 按需加载,表明只有在 NERDTreeToggle 命令被调用时, 对应的插件才会被加载;
Plug 'tpope/vim-fireplace', { 'for': 'clojure' }
使用 按需加载,表明只有编辑 clojure 类型的文件时该插件才会被打开;
Plug 'rdnetto/YCM-Generator', { 'branch': 'stable' }
显式指定使用YCM-Generator插件的 stable 分支;
Plug 'nsf/gocode', { 'tag': 'v.20150303', 'rtp': 'vim' }
指定插件所用git标签,rtp描述了包含vim插件的子目录;
Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' }
用 dir 选项单独指定了该插件存放的目录,do选项用于 Post-update hook,指定在安装或者更新完插件后所需要执行的额外操作;
Plug '~/my-prototype-plugin'
表示不用github托管的本地vim插件;
call plug#end()
用于标识vim-plug配置的结束。
3、使用vim-plug安装vim插件
在Vim命令行模式下,使用命令 :PlugInstall
可安装vim配置文件中所有配置的vim插件;也可以使用 PlugInstall [name ...]
来指定安装某一个或某几个vim插件。
:PlugStatus
可查看vim插件的当前状态,:PlugUpdate [name ...]
用于安装或更新对应vim插件,而vim-plug本身的更新则使用命令 :PlugUpgrade
。
YCM插件能让vim像那些IDE一样自动补全代码,跳转等等,它通过预先编译,根据编译的结果来推测需要补全的内容。
在运行安装脚本之前,需要解决一些依赖问题,具体如下:
确保vim版本在7.4.1578以上。通过vim --version
来查看。ubuntu18默认为vim8.1。
确保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可执行文件的路径
安装剩余依赖库
sudo apt install build-essential cmake
sudo apt install clang libclang-dev # clang库帮助实现语义支持
YCM很大,而且国内与GitHub间的连接不稳定,所以这个过程可能会持续很久尝试很多次,成功下载完之后进入目录 ~/.vim/plugged/YouCompleteMe
python3 install.py --clang-complete
到此,YCM安装完成
最后在~/.vim文件中添加下面一行
let g:ycm_global_ycm_extra_conf='~/.vim/plugged/YouCompleteMe/third_party/ycmd/.ycm_extra_conf.py'