07 Vim 包管理
Vim 的很多特色和高级功能都是通过插件的方式提供的。这样的模式使得 Vim 能否按需定制,在即保证功能的情况下又避免了臃肿。同时,这也是 Vim 强大和灵活的原因之一。
1. Vim 的包管理工具
Vim 有三种插件管理器:
- Vundle
- Vim-plug
- Vim 原生插件管理器
这个小节我们主要介绍前两种第三方包管理器,原生 Vim 包管理针对批量管理插件不友好,需要手动维护。不像第三方包管理可以提供针对性功能(分支选择,条件显示等),所以推荐方式还是用第三方包管理,这也是推荐方式。
2. Vundle 包管理
Vundle 是最使用广泛的第三方 Vim 开源包管理器。可以很容易安装、更新、卸载插件。
- Github地址
- 最新版本:0.10.2
2.1 Vundle 安装
- 安装 Git
Windows:直接官网下载安装包到本地安装
Ubuntu:使用
apt install git
安装。
- 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.
- 配置 Vimrc 加载相应插件
因为篇幅问题,Vimrc 我放到了Github上。大家可以下载到本地家目录下重命名为.vimrc.。
配置完 Vimrc 之后直接 Vim 打开后就会按需加载相应的插件了:
Tips : 安装插件还可以再命令模式下使用 PluginInstall 方式进行安装。大家可以自行去了解一下这种方式。
2.2 Vim-plug 安装
Vim -plug 是另外一个 Vim 的插件管理器,算得上是一个后起之秀,相比于 Vundle 它有以下的亮点:
- Vim-plug 更加轻量
- 可以并行安装、更新,速度更快
- 支持回滚更新等操作
- 支持 Branch/tag/commit
- 支持外部管理插件
- 按需加载可加快启动时间
安装步骤
- 同样需要通过Git 克隆代码到本地。
curl -fLo〜/ .vim/ autoload / plug.vim --create-dirs
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
Tips: 大家可以注意下所有包管理器目录都在家目录的.vim 下。
autoload: Vim-plug 包管理器
bundle: Vundle 包管理器
- 同样需要通过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。