Vim

.vimrc 文件说明

.vimrc 是控制 VIM 行为的配置文件,位于 ~/.vimrc,不论 VIM 窗口外观、显示字体,还是操作方式、快捷键、插件属性均可通过编辑该配置文件将 VIM 调教成最适合你的编辑器。

很多人之所以觉得 VIM 难用,是因为 VIM 缺少默认设置,甚至安装完后你连配置文件自身都找不到,不进行任何配置的 VIM 的确难看、难用。不论用于代码还是普通文本编辑,有必要将如下基本配置加入 .vimrc 中。

前缀键。各类 VIM 插件帮助文档中经常出现 ,即,前缀键。VIM 自带有很多快捷键,再加上各类插件的快捷键,大量快捷键出现在单层空间中难免引起冲突,为缓解该问题,引入了前缀键 ,这样,键 r 可以配置成 r、rr 等等多个快捷键。前缀键是 VIM 使用率较高的一个键(最高的当属 Esc),选一个最方便输入的键作为前缀键,将有助于提高编辑效率。找个无须眼睛查找、无须移动手指的键 —— 分号键,挺方便的,就在你右手小指处:

" 定义快捷键的前缀,即<Leader>
let mapleader=";"

既然前缀键是为快捷键服务的,那随便说下快捷键设定原则:不同快捷键尽量不要有同序的相同字符。比如,e 执行操作 0 和 eb 执行操作 1,在你键入 e 后,VIM 不会立即执行操作 0,而是继续等待用户键入 b,即便你只想键入 e,VIM 也不得不花时间等待输入以确认是哪个快捷键,显然,这让 e 响应速度变慢。eaeb 就没问题。

文件类型侦测。允许基于不同语言加载不同插件(如,C++ 的语法高亮插件与 python 的不同):

" 开启文件类型侦测
filetype on
" 根据侦测到的不同类型加载对应的插件
filetype plugin on

快捷键。把 VIM(非插件)常用操作设定成快捷键,提升效率:

" 定义快捷键到行首和行尾
nmap LB 0
nmap LE $
" 设置快捷键将选中文本块复制至系统剪贴板
vnoremap <Leader>y "+y
" 设置快捷键将系统剪贴板内容粘贴至 vim
nmap <Leader>p "+p
" 定义快捷键关闭当前分割窗口
nmap <Leader>q :q<CR>
" 定义快捷键保存当前窗口内容
nmap <Leader>w :w<CR>
" 定义快捷键保存所有窗口内容并退出 vim
nmap <Leader>WQ :wa<CR>:q<CR>
" 不做任何保存,直接退出 vim
nmap <Leader>Q :qa!<CR>
" 依次遍历子窗口
nnoremap nw <C-W><C-W>
" 跳转至右方的窗口
nnoremap <Leader>lw <C-W>l
" 跳转至左方的窗口
nnoremap <Leader>hw <C-W>h
" 跳转至上方的子窗口
nnoremap <Leader>kw <C-W>k
" 跳转至下方的子窗口
nnoremap <Leader>jw <C-W>j
" 定义快捷键在结对符之间跳转
nmap <Leader>M %

立即生效。全文频繁变更 .vimrc,要让变更内容生效,一般的做法是先保存 .vimrc 再重启 VIM,太繁琐了,增加如下设置,可以实现保存 .vimrc 时自动重启加载它:

" 让配置变更立即生效
autocmd BufWritePost $MYVIMRC source $MYVIMRC

比如,我可以随时切换配色方案:

配置变更立即生效

其他。搜索、VIM 命令补全等设置:

" 开启实时搜索功能
set incsearch
" 搜索时大小写不敏感
set ignorecase
" 关闭兼容模式
set nocompatible
" vim 自身命令行模式智能补全
set wildmenu

以上的四类配置不仅影响 VIM,而且影响插件是否能正常运行。很多插件不仅要在 .vimrc 中添加各自特有的配置信息,还要增加 VIM 自身的配置信息,在后文的各类插件介绍中,我只介绍对应插件特有配置信息,当你发现按文中介绍操作后插件未生效,很可能是 VIM 自身配置信息未添加,所以一定要把上述配置拷贝至到你的 .vimrc 中,再对照本文介绍一步步操作。.vimrc 完整配置信息参见附录,每个配置项都有对应注释。另外,由于有些插件还未来得及安装,在你实验前面的插件是否生效时,VIM 可能有报错信息提示,先别理会,安装完所有插件后自然对了。