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之间并保存

设置好配置文件后,可通过下述两种方法安装插件:

至此,需要安装的插件已经安装完毕,可以正常使用了

使用Vundle删除插件

使用Vundle删除插件:

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插件取别名
doPost-update hook,某些vim插件在完成安装或更新后,需要执行额外的操作,可以使用 do 选项指定具体的操作或函数
on按需加载: vim命令或-mappings
for按需加载: 文件类型
frozenDo not update unless explicitly specified

:do 选项的操作如果是以 : 开头,则表示其为vim命令,例如: Plug 'fatih/vim-go', { 'do': ':GoInstallBinaries' }

使用vim-plug安装vim插件

在Vim命令行模式下,使用命令 :PlugInstall 可安装vim配置文件中所有配置的vim插件;也可以使用 PlugInstall [name ...] 来指定安装某一个或某几个vim插件。

ssl

: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)

vim 技巧

vim 技巧(1) vim 入门教程(2) vim 三种操作模式(3) vim 光标移动(4) vim ctrl+s卡死(5) vim 重复操作命令(6) vim 多行操作(7) vim 配色方案整理(8) vim 安装插件管理器(9) vim 内容搜索(10) vim 替换命令(11) vim 自动补齐(12) vim 升级8.x版本(13)