插件管理
Vim 的插件生态系统非常丰富,通过安装插件,你可以为 Vim 添加 IDE 级别的功能:代码补全、语法检查、文件浏览、Git 集成等。
插件管理器
Vim 有多种插件管理器,最流行的是:
- vim-plug:轻量、并行安装、支持按需加载
- Vundle:老牌插件管理器
- Pathogen:早期的插件管理方案
- dein.vim:Shougo 开发的现代插件管理器
- packer.nvim:Neovim 专用
本章以 vim-plug 为例,它是最简单、最流行的选择。
安装 vim-plug
Linux/macOS
curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
Windows (PowerShell)
md ~\vimfiles\autoload
$uri = 'https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim'
(New-Object Net.WebClient).DownloadFile($uri, $ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath("~\vimfiles\autoload\plug.vim"))
配置插件
基础配置
在 .vimrc 中添加:
" 开始插件管理
call plug#begin('~/.vim/plugged')
" 在这里列出插件
Plug 'tpope/vim-sensible' " 合理的默认设置
Plug 'tpope/vim-surround' " 快速操作包围符号
Plug 'tpope/vim-commentary' " 快速注释
" 结束插件管理
call plug#end()
安装插件
- 保存
.vimrc - 重启 Vim 或执行
:source ~/.vimrc - 运行
:PlugInstall
更新插件
:PlugUpdate " 更新所有插件
:PlugUpdate Plugin " 更新指定插件
删除插件
- 从
.vimrc中删除插件行 - 运行
:PlugClean
推荐插件
基础增强
" 合理的默认设置
Plug 'tpope/vim-sensible'
" 包围符号操作(ds, cs, ys)
Plug 'tpope/vim-surround'
" 快速注释(gc)
Plug 'tpope/vim-commentary'
" 重复插件操作(.)
Plug 'tpope/vim-repeat'
" 成对符号自动补全
Plug 'jiangmiao/auto-pairs'
文件浏览
" 文件树浏览器
Plug 'preservim/nerdtree'
" 快速文件查找
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
Plug 'junegunn/fzf.vim'
代码补全
" 代码补全引擎
Plug 'neoclide/coc.nvim', {'branch': 'release'}
" 或者使用内置补全
Plug 'lifepillar/vim-mucomplete'
语法高亮和检查
" 语法检查
Plug 'dense-analysis/ale'
" 现代语法高亮
Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'}
主题和外观
" 流行的主题
Plug 'morhetz/gruvbox'
Plug 'joshdick/onedark.vim'
Plug 'dracula/vim', { 'as': 'dracula' }
" 状态栏
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
Git 集成
" Git 包装器
Plug 'tpope/vim-fugitive'
" Git 修改标记
Plug 'airblade/vim-gitgutter'
完整配置示例
" ============================================
" Vim 插件配置
" ============================================
call plug#begin('~/.vim/plugged')
" 基础增强
Plug 'tpope/vim-sensible'
Plug 'tpope/vim-surround'
Plug 'tpope/vim-commentary'
Plug 'tpope/vim-repeat'
Plug 'jiangmiao/auto-pairs'
" 文件浏览
Plug 'preservim/nerdtree'
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
Plug 'junegunn/fzf.vim'
" 代码补全
Plug 'neoclide/coc.nvim', {'branch': 'release'}
" 语法检查
Plug 'dense-analysis/ale'
" 主题
Plug 'morhetz/gruvbox'
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
" Git
Plug 'tpope/vim-fugitive'
Plug 'airblade/vim-gitgutter'
call plug#end()
" ============================================
" 插件配置
" ============================================
" NERDTree 配置
nnoremap <leader>n :NERDTreeToggle<CR>
let NERDTreeShowHidden=1
" fzf 配置
nnoremap <leader>f :Files<CR>
nnoremap <leader>g :Grep<CR>
nnoremap <leader>b :Buffers<CR>
" 主题配置
set termguicolors
set background=dark
colorscheme gruvbox
" airline 配置
let g:airline#extensions#tabline#enabled = 1
let g:airline_theme='gruvbox'
常用插件详解
vim-surround
快速操作包围符号:
ds" " 删除双引号
cs"' " 双引号改单引号
ysiw" " 给单词添加双引号
yss" " 给整行添加双引号
vim-commentary
快速注释代码:
gcc " 注释当前行
gcip " 注释当前段落
gcG " 注释到文件末尾
NERDTree
文件树浏览器:
<leader>n " 打开/关闭文件树
? " 查看帮助(在 NERDTree 窗口中)
fzf
模糊文件查找:
<leader>f " 查找文件
<leader>g " 文本搜索
<leader>b " 切换缓冲区
Ctrl+t " 在新标签页打开
Ctrl+x " 在水平分割打开
Ctrl+v " 在垂直分割打开
coc.nvim
代码补全引擎(需要安装语言服务器):
" 安装语言服务器
:CocInstall coc-python
:CocInstall coc-json
:CocInstall coc-html
" 常用快捷键
Tab " 确认补全
Ctrl+n " 下一个补全项
Ctrl+p " 上一个补全项
K " 显示文档
gd " 跳转到定义
gr " 显示引用
插件管理命令
| 命令 | 作用 |
|---|---|
:PlugInstall | 安装新插件 |
:PlugUpdate | 更新插件 |
:PlugClean | 删除未使用的插件 |
:PlugStatus | 查看插件状态 |
:PlugDiff | 查看更新差异 |
性能优化
按需加载
" 只在特定文件类型加载
Plug 'fatih/vim-go', { 'for': 'go' }
Plug 'pangloss/vim-javascript', { 'for': 'javascript' }
" 只在执行命令时加载
Plug 'preservim/nerdtree', { 'on': 'NERDTreeToggle' }
延迟加载
" 启动后延迟加载
Plug 'tpope/vim-fireplace', { 'for': 'clojure', 'on': [] }
" 手动触发加载
autocmd FileType clojure call plug#load('vim-fireplace')
练习
练习 1:安装 vim-plug
1. 按照说明安装 vim-plug
2. 在 .vimrc 中添加基础配置
3. 安装 2-3 个基础插件
4. 运行 :PlugInstall
练习 2:配置主题
1. 安装 gruvbox 主题
2. 配置 airline 状态栏
3. 设置 termguicolors
4. 选择你喜欢的配色
练习 3:文件浏览
1. 安装 NERDTree 和 fzf
2. 配置快捷键打开文件树
3. 使用 fzf 查找文件
4. 练习在文件间切换
下一步
掌握了插件管理后,你的 Vim 已经具备了现代编辑器的功能。建议从基础插件开始,逐步添加需要的功能,避免一次安装过多插件影响性能。
更多插件可以在 Vim Awesome 网站查找。