Vim 基础配置快速入门

2019-06-18 ⏳3.0分钟(1.2千字) 🕸️

本文从零开始为初学整理一份看得懂改得动的 vimrc 配置。初学者可以在这个基础上逐步加入需要的配置,最终形成自己的风格。另外,本文已经改为基于 NeoVim 进入配置。关于为什么使用 NeoVim 可以参考我的文章我为什么选择 NeoVim

基础配置

NeoVim 的 默认配置文件是 ~/.config/nvim/init.vim,没有的话请自行创建。因为 NeoVim 已经默认开启很多配置,所以需要调整的不多,内容如下:

" 早期计算机经常崩溃,vim 会自动创建一个 .swp 结尾的文件
" 崩溃重启后可以从 .swap 文件恢复,现在不需要此功能了
set noswapfile
" 高亮第 80 列,推荐
set colorcolumn=80
" 高亮光标所在行,推荐
set cursorline
" 搜索的时候忽略大小写
set ignorecase
" 如果搜索词中有大字字母,则停止忽略大小写
set smartcase

主题与插件

主题是一类特殊的插件。插件一般从 github 上下载。下载后放到 ~/.config/nvim/pack/vendor/start 就可以了。为什么要放这个目录呢?可以参考这篇文章😉

tender

vim 默认的主题确实难看。毫无疑问,得来一把整容。但每个人都有不同的审美。在这里我介绍一下自己使用多年 tender 主题。需要在终端支持 24 位真彩色,具体参考 https://gist.github.com/XVilka/8346728

git clone https://github.com/jacoborus/tender.vim ~/.config/nvim/pack/vendor/start/tendor

我对主题做了微调:

" 开启 24 位真彩色支持
set termguicolors
" 设置主题
color tender
" tender 默认背景色是一种亮灰色,晚上特别不舒服,改成纯黑
highlight Normal guibg=#000000

nerdtree

git clone https://github.com/scrooloose/nerdtree ~/.config/nvim/pack/vendor/start/nerdtree

执行 :NERDTree 可以在左边打开一个类似文件浏览器的窗口。可以像普通窗口一样移动光标、搜索关键字,惟一的不同是按回车键可以展开文件夹,如果在在文件上按回车则会打开相应的文件。

执行 :NERDTreeToggle 则可以打开或者关闭窗口;执行 :NERDTreeFind 则可以打开管理窗口并将光标定位到当前文件。

因为实在是太常用,我给这两个命令设了两个快捷键:

nnoremap <silent> <leader>e :NERDTreeToggle<cr>
nnoremap <silent> <leader>f :NERDTreeFind<cr>

vim 有个 leader 键,默认这个键是 \leader 键提供了一个键位空间,防止用户自定义的快捷键覆盖默认键位的功能。推荐大家使用 leader 键。网上有人推荐使用 , 作为 leader 键。真心不推荐,因为 , 是跟 ; 配对,用来重复行内查找的。

在这里,当按 \+e 时 vim 打开 NERDTree;按 \+f vim 会打开 NERDTree 并定位到当前文件。非常方便。

fzf

模糊路径搜索应该是现在编辑器的标配功能,vim 也不例外。我最早使用的 ctrlp.vim。现在推荐使用搜索速度更快的 fzf

首先需要按装 fzf 工具,如果你用 mac,可以执行:

brew install fzf

然后按装我自己的 fzf.vim

git clone https://github.com/taoso/fzf.vim ~/.config/nvim/pack/vendor/start/fzf

做一个键位映射,我依然使用 ctrl+p

nnoremap <silent> <c-p> :call fzf#Open()<cr>

但是,为什么要用自己的 fzf 插件呢?我开发的版本是基于 terminal 特性实现的,总共不到五十行代码,非常简炼。推荐大家使用。如果大家对 fzf 插件的原理感兴趣,则可以参考我的文章开发一个 Vim 文件路径搜索插件

mru

另一个常用的插件也是我自己开发的,叫 mru

git clone https://github.com/taoso/mru.vim ~/.config/nvim/pack/vendor/start/mru

mru 的功能也很简单:记录最近打开过的文件列表。如果执行 :Mru 命令,mru 会打开一个窗口列出最近打开过的文件列表。你可以移动光标选择文件,按回车就可以切换到对应的文件。

因为很常用,我也设了一个快捷键:

nnoremap <silent> <c-u> :Mru<cr>

mru 还是学习 vim 插件开发的好材料,如果感兴趣可以参考我的文章开发一个 Vim 最近文件列表插件

ag

最后一个必备插件是 ag,用于搜索文件内容。之前我一直用ack,后来发现完全可以自己开发,于是只用了 12 行就实现了基础功能,取名为 ag.vim。工作原理可以参考我的文章开发一个简单的 Vim 搜索插件

git clone https://github.com/taoso/ag.vim ~/.config/nvim/pack/vendor/start/ack

需要安装 ag 工具。如果使用 mac 则可以:

brew install the_silver_searcher

ag.vim 也支持 ripgrep,需要在 init.vim 中添加如下配置:

let g:ag_cli = 'rg'

如果要搜索 vim 关键字,则可以执行 :Ag vim。ag.vim 还支持正则表达式,比如:Ag Ag\b只搜索Ag关键字,但不匹配Agender这类的内容。正则表达式可以参考我的文章正则表达式入门

总结

本文介绍了一个最精简的 vim 配置,并推荐了几个简单却极为常用的插件,希望能为初学者打开一扇门。

我个人使用的完整版本请参考 https://github.com/taoso/vim