Vim支持各种插件,也正是因为插件太多导致各个插件的管理比较麻烦,于是Vim插件管理器诞生了,用于安装、管理、卸装Vim插件。本文主要介绍Vim插件管理器Pathogen和Vundle的安装、配置和使用方法。
1.Vim插件管理器Pathogen
安装Pathogen
pathogen只有一个单独的脚本pathogen.vim,其github下载地址为:https://github.com/tpope/vim-pathogen
Pathogen下载后直接解压并保存到当前用户的 ~/.vim/autoload
目录即可完成安装
启用Pathogen
在Vim配置文件vimrc vim ~/.vimrc
里面增加以下三条命令即可启用Pathogen插件。
execute pathogen#infect()
syntax on
filetype plugin indent on
使用Pathogen安装、卸装Vim插件
在当前用户目录~/.vim/
下新建bundle
目录,将新安装插件放到该目录下后,Pathogen会自动在bundle目录下生成对应插件子目录并使该插件生效。
而如果需要卸载插件,只需把~/.vim/bundle
目录下对应的插件目录删除即可
2.Vim插件管理器Vundle
安装Vundle
Vundle插件也是提供一个Vundle.vim文件,其下载地址为:https://github.com/VundleVim/Vundle.vim.git
将下载的Vundle.vim文件保存到~/.vim/bundle
即可完成Vundle的安装
也可以使用以下的命令直接从github拉取Vundle.vim
文件到bundle
文件夹下 git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
配置Vundle
修改Vim配置文件vimrc,增加必要的配置,以下是.vimrc
配置模板
set nocompatible "去除VIM一致性,必须"
filetype off "必须"
"设置包括vundle和初始化相关的运行时路径"
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
"启用vundle管理插件,必须"
Plugin 'VundleVim/Vundle.vim'
"在此增加其他插件,安装的插件需要放在vundle#begin和vundle#end之间"
"安装github上的插件格式为 Plugin '用户名/插件仓库名'"
call vundle#end()
filetype plugin indent on "加载vim自带和插件相应的语法和文件类型相关脚本,必须"
使用Vundle安装插件
首先需要将要安装的插件,按照上述配置格式将插件地址填写在vundle#begin和vundle#end之间并保存
设置好配置文件后,可通过下述两种方法安装插件:
- 在Vim尾行模式下运行命令
:PluginInstall
- 在终端命令行下通过命令
vim +PluginInstall +qall
直接安装
至此,需要安装的插件已经安装完毕,可以正常使用了
使用Vundle删除插件
使用Vundle删除插件:
- 需要删除Vim插件时,只需编辑Vim配置文件
.vimrc文件
,删除要移除插件所对应的Plugin一行 - 打开Vim,在Vim尾行模式执行命令
:BundleClean
即可删除对应Vim插件
3.Vim插件管理器vim-plug
Vundle是一款非常出名且历史悠久的Vim插件管理工具。但随着安装的vim插件越来越多,使用Vundle来管理这些插件时效率变得越来越低,vim启动耗时也越来越大。
而vim-plug是一款非常轻量又高效的vim插件管理工具。它支持全异步、多线程并行安装插件,支持git分支、标签等,可以对插件进行回滚更新、还支持按需加载插件(On-demand loading),可以指定对特定文件类型加载对应vim插件,大大加快了vim启动时间。
安装vim-plug插件管理器
vim-plug使用github进行托管和维护,只需要下载对应的plug.vim 文件并保存到 autoload 目录即可完成安装。
ubuntu系统下可使用以下命令快速安装vim-plug。
mkdir ~/.vim/autoload/
cd ~/.vim/autoload/
wget https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
或使用curl工具来简化下载过程。
curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
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配置的结束
总结上面的vim-plug配置,可以发现vim-plug支持以下配置项:
选项 | 功能描述 |
---|
branch/tag/commitbranch/tag/co | 所用插件git仓库的Branch/tag/commit |
rtp | 包含vim插件的子目录 |
dir | 该vim插件的定制化目录 (Custom directory) |
as | 给vim插件取别名 |
do | Post-update hook,某些vim插件在完成安装或更新后,需要执行额外的操作,可以使用 do 选项指定具体的操作或函数 |
on | 按需加载: vim命令或-mappings |
for | 按需加载: 文件类型 |
frozen | Do not update unless explicitly specified |
注
:do 选项的操作如果是以 :
开头,则表示其为vim命令,例如: Plug 'fatih/vim-go', { 'do': ':GoInstallBinaries' }
使用vim-plug安装vim插件
在Vim命令行模式下,使用命令 :PlugInstall
可安装vim配置文件中所有配置的vim插件;也可以使用 PlugInstall [name ...]
来指定安装某一个或某几个vim插件。
:PlugStatus
可查看vim插件的当前状态,:PlugUpdate [name ...]
用于安装或更新对应vim插件,而vim-plug本身的更新则使用命令 :PlugUpgrade。
vim-plug的命令列表如下所示。
命令 | 功能描述 |
---|
PlugInstall [name …] [#threads] | 安装插件 |
PlugUpdate [name …] [#threads] | 安装或更新vim插件 |
PlugClean[!] | 卸装未使用的目录 (bang version will clean without prompt) |
PlugUpgrade | 更新vim-plug自身 |
PlugStatus | 查看vim插件的状态 |
PlugDiff | 对比上次PlugUpdate的更改 (Examine changes from the previous update and the pending changes) |
PlugSnapshot[!] [output path] | 保存当前插件的镜像副本到指定目录 (Generate script for restoring the current snapshot of the plugins) |