Vim 包管理
Vim 的很多特色和高級功能都是通過插件的方式提供的。這樣的模式使得 Vim 能否按需定制,在即保證功能的情況下又避免了臃腫。同時(shí),這也是 Vim 強(qiáng)大和靈活的原因之一。
1. Vim 的包管理工具
Vim 有三種插件管理器:
- Vundle
- Vim-plug
- Vim 原生插件管理器
這個(gè)小節(jié)我們主要介紹前兩種第三方包管理器,原生 Vim 包管理針對批量管理插件不友好,需要手動維護(hù)。不像第三方包管理可以提供針對性功能(分支選擇,條件顯示等),所以推薦方式還是用第三方包管理,這也是推薦方式。
2. Vundle 包管理
Vundle 是最使用廣泛的第三方 Vim 開源包管理器??梢院苋菀装惭b、更新、卸載插件。
- Github地址
- 最新版本:0.10.2
2.1 Vundle 安裝
- 安裝 Git
-
Windows:直接官網(wǎng)下載安裝包到本地安裝
-
Ubuntu:使用
apt install git
安裝。
- Git 克隆 Vundle 到本地:
運(yùn)行這條命令就可以把 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 加載相應(yīng)插件
因?yàn)槠鶈栴},Vimrc 我放到了Github上。大家可以下載到本地家目錄下重命名為.vimrc.。
配置完 Vimrc 之后直接 Vim 打開后就會按需加載相應(yīng)的插件了:

Tips : 安裝插件還可以再命令模式下使用 PluginInstall 方式進(jìn)行安裝。大家可以自行去了解一下這種方式。
2.2 Vim-plug 安裝
Vim -plug 是另外一個(gè) Vim 的插件管理器,算得上是一個(gè)后起之秀,相比于 Vundle 它有以下的亮點(diǎn):
- Vim-plug 更加輕量
- 可以并行安裝、更新,速度更快
- 支持回滾更新等操作
- 支持 Branch/tag/commit
- 支持外部管理插件
- 按需加載可加快啟動時(shí)間
安裝步驟
- 同樣需要通過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來加載,但是語法會有一點(diǎn)不一樣。
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 加載插件有幾個(gè)特點(diǎn):
- 允許直接通過 github 地址加載插件
- 可以同時(shí)加載多個(gè)插件
- 還可以通過本地手動加載和更新插件
- 可以更具 git branch 來加載相應(yīng)分支
打開 Vim,安裝插件
Vim-plug 使用方式
基礎(chǔ)命令
命令 | 解釋 | |
---|---|---|
PlugInstall | 安裝插件 | |
PlugUpdate | 更新插件 | |
PlugClean | 插件卸載 | |
PlugUpgrade | 更新 vim-plug 本身 | |
PlugStatus | 檢查插件狀態(tài) | |
PlugDiff | 查看前一個(gè)更新日志 | |
PlugSnapshot | 生成當(dāng)前插件快照腳本 |
通過不同選項(xiàng)按需加載插件,vimrc 文件中插件語法可以總結(jié)為:Plug ‘插件名’, {‘option’: ‘條件’}
選項(xiàng) | 解釋 | 案例 | 備注 |
---|---|---|---|
do | 加載后需要執(zhí)行的額外操作 | Plug ‘junegunn/fzf’, { ‘dir’: ‘~/.fzf’, ‘do’: ‘./install --all’ } | 加載插件后通過do 選項(xiàng)執(zhí)行./install–all命令 |
on | 按照命令調(diào)用加載 | Plug ‘scrooloose/nerdtree’, { ‘on’: ‘NERDTreeToggle’ } | 只有NERDTreeToggle命令被調(diào)用時(shí)候才會加載插件 |
for | 按照文件類型加載 | Plug ‘tpope/vim-fireplace’, { ‘for’: ‘clojure’ } | 只有文件類型是clojure時(shí)候才會加載插件 |
branch/tag/commit | 根據(jù)倉庫分支標(biāo)簽等條件 | Plug ‘rdnetto/YCM-Generator’, { ‘branch’: ‘stable’ } | 加載分支為 stable 的插件 |
dir | 自定義插件安裝目錄 | Plug ‘junegunn/fzf’, { ‘dir’: ‘~/.pl’} | 加載插件到自定義pl目錄 |
3. 推薦使用 Vim-plug
這一小節(jié)我們介紹了兩種 Vim 的包管理工具,在這里其實(shí)我更推薦大家使用 vim-plug ,與 Vundle相比較 vim-plug 有以下優(yōu)點(diǎn):
- 代碼更新,社區(qū)維護(hù)更活躍
- 性能更好
- 語法更直觀簡單
- 支持按需加載
- 可以同時(shí)加載多個(gè)插件還可以通過本地手動加載和更新插件
- 可以根據(jù) git branch 來加載相應(yīng)分支
- 可以查看回滾和更新
4. 小結(jié)
Vim 包管理方便了我們加載插件。讓我們更加專注于開發(fā)。豐富的插件讓Vim 如虎添翼提供了豐富的功能。讓我們可以 DIY 一個(gè)屬于自己的 IDE。