VIM
对于我个人而言,非常喜欢使用 Vim。喜欢到什么程度呢?无 VIM 不编码。这一篇文档描述了 Vim 的一些基本用法,掌握这些内容,基本上就可以在各种环境下使用 Vim 了。
安装
Vim 的安装还是比较简单的,大部分的 Linux 发行版的都预装了它。但是如果你希望使用新版的 Vim8,可能需要卸载旧版从新编译安装一下。唯一需要注意的是,编译选项中需要开启 Python3 解释器的支持。基本的安装过程如下:
安装完成之后,会在 src 目录下编译出一个二进制的文件 vim ,把这个文件直接移动到 PATH 目录下就可以了:
基本使用
下面将介绍一些 Vim 的基本使用,一定要把基本的使用多多练习,为深入的内容打好基础。
移动光标
首先要学习的一定是如何移动光标,不允许使用方向键,而是在普通模式下使用 hjkl 四个字母按键:

场景 | 操作 | 英文助记 |
|---|---|---|
跳转到行首 | 普通模式下: | |
跳转到行尾 | 普通模式下: | |
跳转到往后某个字符 | 普通模式下: | To Char |
跳转到往前某个字符 | 普通模式下: | Forward Char |
跳转到文件头 | 普通模式下: | |
跳转到文件尾 | 普通模式下: | |
跳转到指定行 | 命令模式下输入行号 |
删除操作
常见的删除操作如下表所示:
场景 | 操作 | 英文助记 |
|---|---|---|
向前删除一个字符 | 普通模式下: | |
向后删除一个字符 | 普通模式下: | |
删除一个单词 | 普通模式下: | Delete a Word |
删除多个单词 | 普通模式下: | Delete n Word |
删除到指定字符 | 普通模式下: | Delete To Char |
删除一行 | 普通模式下: | |
删除全部内容 | 命令模式下使用 | |
删除连续的多行 | 命令模式下使用 | From n To m Delete |
删除所有的空行 | 命令模式下使用 | Delete |
插入模式
下表记录了一些快捷切换到插入模式的操作:
场景 | 操作 | 英文助记 |
|---|---|---|
进入插入模式 | 普通模式下: | Insert |
光标移动到上一行,并插入 | 普通模式下: | |
光标移动到下一行,并插入 | 普通模式下: | |
光标移动到下个字符后,并插入 | 普通模式下: | Append |
查找与替换
查找的相关场景的操作如下表所示:
场景 | 操作 | 英文助记 |
|---|---|---|
从上往下查找 | 普通模式下输入: | |
从下往上查找 | 普通模式下输入: | |
下一个搜索项 | 搜索模式下输入: | Next |
上一个搜索项 | 搜索模式下输入: | Next |
快速查找 | 光标定位到查找的单词,然后输入: |
替换的相关场景的操作如下表所示:
场景 | 操作 | 英文助记 |
|---|---|---|
当前行查找替换, 匹配第一个 |
| |
当前行查找替换, 匹配所有 |
| |
整个文件查找替换,匹配第一个 |
| |
整个文件查找替换,匹配所有 |
| |
指定范围查找替换,匹配第一个 |
| |
指定范围查找替换,匹配所有 |
|
分屏
默认情况下,我们打开的都是单个文件。那么如果打开多个文件呢?那就需要将其分屏显示。在打开文件的时候,给 vim 加上 -o 或者 -O 来指定多个文件,并分屏显示,前者表示水平分割后者表示垂直分割:

我们也可以对当前文件进行分割, 使用快捷键 CTRL+S 或者 CTRL+V, 前者是垂直分割,后者是水平分割。

如果是要对不同的文件进行分割,就需要在命令模式下使用 split <FileName> 或者 vsplit <FileName>, 同样的道理,前者是垂直分割或者是水平分割:

如何操作分配呢?如下表所示:
对分屏的操作 | 如何操作 |
|---|---|
关闭其他分配,仅仅留下当前分屏 | 在 Command 模式下输入 only, 或者使用快捷键 |
退出当前所在分屏 | 在 Command 模式下输入 q 或者 quit |
在分屏之间跳转 | 使用快捷键 |
扩大或者缩小分屏范围 | 使用快捷键 |
调整分屏顺序 | 使用快捷键 |
新建一个文件 | 在 Command 模式下输入 new |
更换配色方案是一件简单的事情,确实最能够吸引眼球的事情。我们可以从 GitHub 上找到对应的配置方法,多半只是一个以 .vim 结尾的文件而已,然后将这个文件放在 ~/.vim/colors 目录下使用 Git Clone 即可。
而我选择的配置方案是 morhetz/gruvbox 。效果图如下:

使用插件管理工具-VimPlug
VimPlug 是一个崇尚极简主义的一个包管理工具。我们可以使用如下命令进行安装:
然后我们在 vim 的配置文件( Linux 位于 ~/.vimrc )中加入如下配置:
并不需要理解这些配置是什么意思,主要的目的就是为了启用 Minpac 这个插件管理工具。安装插件使用:PlugInstall 命令,在 Vim 的命令模式下。
语法补足
使用强大的 YouCompleteMe 可以补足语法,它是 Ycmd 的客户端。所以,首先我们需要安装 Ycmd:
显示目录树-NERDTree
首先我们需要安装 preservim/nerdtree 插件,这是一个非常好用的目录树插件。
在安装后,我们使用 Vim 打开一个文件后,使用命令 :NERDTree 就可以打开目录树,如下图所示:

如何切换左边的目录和右边的文件呢?
切换目录,使用
<C-W-h>切换文件,使用
<C-W-l>
如何对目录进行操作呢?
使用
P可以跳到最顶层的根目录,使用p可以跳到父级目录。在任意的目录节点上,使用
m可以调出操作菜单,对节点进行增删改。使用
R可以刷新目录节点。默认情况下,不会显示隐藏的目录,可以使用
I显示隐藏或显示的目录或文件。当光标定位在文件节点,我们可以在右边的窗口打开它。使用
i是在水平切割的窗口打开,使用s是在垂直切割的窗口中打开,而使用t是在新的标签页中打开。标签页的切换可以使用
gt或者指定数字的标签页1gt、2gt。
如何调正分栏的大小呢?使用 <C-W>+ 或者 <C-W>- 。如果要在打开 Vim 的时候自动开启目录,在 Vimrc 中如下配置:
状态栏美化-Airline
Vim 默认的状态栏并不好看,我们需要对其进行美化。首先我们安装两个插件:
然后,我们在 .vimrc 配置文件中加入一行配置:
最后,我们重新打开 Vim 就可以看到如下的状态栏样式, 相比原来的要好看的多: ![]()
再见,HTML 标签
我刚开始学习编程的时候,是在 Windows 的记事本上输入 HTML 标签,那种输入速度现在来看真的是蜗牛。在 Vim 中如何快速输入 HTML 标签呢?有一个插件叫做 vim-emmet, 请按照上文中介绍的包管理器安装它。
在安装之后我们就可以快速输入 HTML 标签了,比如:
然后按下 ctrl+y, 接着输入 , (英文输入法下的逗号),就可以触发了,自动生成如下的标签模板:
具体的 Emmet 插件的语法,可以参考 官方文档。
代码跳转-Ctags
使用 CTags 可以实现代码的跳转,首先安装:
在需要的目录下,生成 tags 文件:
跳转到光标定位的 tag,使用CTRL+] ,跳回来使用 CTRL+o, 列出所有可能 :ts。
我的 vimrc
下面我留下我的 vim 配置文件,供大家参考: