Vim 包管理

Vim 的很多特色和高级功能都是通过插件的方式提供的。这样的模式使得 Vim 能否按需定制,在即保证功能的情况下又避免了臃肿。同时,这也是 Vim 强大和灵活的原因之一。

1. Vim 的包管理工具

Vim 有三种插件管理器:

  • Vundle
  • Vim-plug
  • Vim 原生插件管理器

这个小节我们主要介绍前两种第三方包管理器,原生 Vim 包管理针对批量管理插件不友好,需要手动维护。不像第三方包管理可以提供针对性功能(分支选择,条件显示等),所以推荐方式还是用第三方包管理,这也是推荐方式。

2. Vundle 包管理

Vundle 是最使用广泛的第三方 Vim 开源包管理器。可以很容易安装、更新、卸载插件。

2.1 Vundle 安装

  1. 安装 Git
  • Windows:直接官网下载安装包到本地安装

  • Ubuntu:使用 apt install git 安装。

  1. Git 克隆 Vundle 到本地:

运行这条命令就可以把 Vundle 克隆到本地: git clone https://github.com/VundleVim/Vundle.vim.git~/.vim/bundle/Vundle.vim

root@JD:/data# git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
Cloning into '/root/.vim/bundle/Vundle.vim'...
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 3140 (delta 0), reused 0 (delta 0), pack-reused 3139
Receiving objects: 100% (3140/3140), 935.39 KiB | 31.00 KiB/s, done.
Resolving deltas: 100% (1106/1106), done.
  1. 配置 Vimrc 加载相应插件

因为篇幅问题,Vimrc 我放到了Github上。大家可以下载到本地家目录下重命名为.vimrc.。

配置完 Vimrc 之后直接 Vim 打开后就会按需加载相应的插件了:

Tips : 安装插件还可以再命令模式下使用 PluginInstall 方式进行安装。大家可以自行去了解一下这种方式。

2.2 Vim-plug 安装

Vim -plug 是另外一个 Vim 的插件管理器,算得上是一个后起之秀,相比于 Vundle 它有以下的亮点:

  • Vim-plug 更加轻量
  • 可以并行安装、更新,速度更快
  • 支持回滚更新等操作
  • 支持 Branch/tag/commit
  • 支持外部管理插件
  • 按需加载可加快启动时间
安装步骤
  1. 同样需要通过Git 克隆代码到本地。
curl -fLo〜/ .vim/ autoload / plug.vim --create-dirs \ 
    https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

Tips: 大家可以注意下所有包管理器目录都在家目录的.vim 下。
img
autoload: Vim-plug 包管理器
bundle: Vundle 包管理器

  1. 同样需要通过Vimrc来加载,但是语法会有一点不一样。

Tips:vim-plug 包管理器vimrc 配置插件需要包含在call plug#begin(’~/.vim/plugged’)call plug#end() 之间。

call plug#begin('~/.vim/plugged')

" Make sure you use single quotes

" Shorthand notation; fetches https://github.com/junegunn/vim-easy-align
Plug 'junegunn/vim-easy-align'

" Any valid git URL is allowed
Plug 'https://github.com/junegunn/vim-github-dashboard.git'

" Multiple Plug commands can be written in a single line using | separators
Plug 'SirVer/ultisnips' | Plug 'honza/vim-snippets'

" On-demand loading
Plug 'scrooloose/nerdtree', { 'on':  'NERDTreeToggle' }
Plug 'tpope/vim-fireplace', { 'for': 'clojure' }
" Unmanaged plugin (manually installed and updated)
Plug '~/my-prototype-plugin'
" Initialize plugin system
call plug#end()

vim-plug 加载插件有几个特点:

  • 允许直接通过 github 地址加载插件
  • 可以同时加载多个插件
  • 还可以通过本地手动加载和更新插件
  • 可以更具 git branch 来加载相应分支

打开 Vim,安装插件

Vim-plug 使用方式

基础命令

命令 解释
PlugInstall 安装插件
PlugUpdate 更新插件
PlugClean 插件卸载
PlugUpgrade 更新 vim-plug 本身
PlugStatus 检查插件状态
PlugDiff 查看前一个更新日志
PlugSnapshot 生成当前插件快照脚本

通过不同选项按需加载插件,vimrc 文件中插件语法可以总结为:Plug ‘插件名’, {‘option’: ‘条件’}

选项 解释 案例 备注
do 加载后需要执行的额外操作 Plug ‘junegunn/fzf’, { ‘dir’: ‘~/.fzf’, ‘do’: ‘./install --all’ } 加载插件后通过do 选项执行./install–all命令
on 按照命令调用加载 Plug ‘scrooloose/nerdtree’, { ‘on’: ‘NERDTreeToggle’ } 只有NERDTreeToggle命令被调用时候才会加载插件
for 按照文件类型加载 Plug ‘tpope/vim-fireplace’, { ‘for’: ‘clojure’ } 只有文件类型是clojure时候才会加载插件
branch/tag/commit 根据仓库分支标签等条件 Plug ‘rdnetto/YCM-Generator’, { ‘branch’: ‘stable’ } 加载分支为 stable 的插件
dir 自定义插件安装目录 Plug ‘junegunn/fzf’, { ‘dir’: ‘~/.pl’} 加载插件到自定义pl目录

3. 推荐使用 Vim-plug

这一小节我们介绍了两种 Vim 的包管理工具,在这里其实我更推荐大家使用 vim-plug ,与 Vundle相比较 vim-plug 有以下优点:

  • 代码更新,社区维护更活跃
  • 性能更好
  • 语法更直观简单
  • 支持按需加载
  • 可以同时加载多个插件还可以通过本地手动加载和更新插件
  • 可以根据 git branch 来加载相应分支
  • 可以查看回滚和更新

4. 小结

Vim 包管理方便了我们加载插件。让我们更加专注于开发。丰富的插件让Vim 如虎添翼提供了丰富的功能。让我们可以 DIY 一个属于自己的 IDE。