常用的 Vim 命令
Vim 编辑器很强大,但却有非常陡峭的学习曲线。非运维向的程序员如果只是偶尔在终端修改一些文本文件,或许真的没有必要花很多的精力把 Vim 的各种强大功能和奇技淫巧都摸透。不过花几天时间学习和掌握一些常用命令,在偶尔需要用 Vim 编辑的时候能像使用其他编辑器一样快速高效还是很有必要的。
我平时开发使用 VSCode,不过安装了 Vim 插件来提高编辑效率。以下是我常用的一些命令:
模式切换
Vim 默认是 Normal 模式,在这个模式下,所有按键都变成了功能键。如果想进入输入模式,需要按 i。此时在编辑器窗口左下角会显示 Insert 表示已进入输入模式。如果想退出重新进入 Normal 模式,则按 ESC 键就可以了。另外,按 v 可以进入可视化选择模式,同样按 ESC键退出到 Normal 模式。可视化选择效果如下图所示:

光标移动
在 Normal 模式下,可以通过下面的命令进行光标移动:
0跳转到行首^跳转到本行第一个不是空字符的位置$跳转到行尾w跳转到下一个单词开头e跳转到下一个单词尾部hjkl分别代表向左、向下、向上、向右移动光标gg跳转到第一行G跳转到最后一行:(number)跳转到指定行,比如:17表示跳转到第 17 行f(char)跳转到下一个指定字符处,比如fa表示跳转到下一个 a 字符处,反向操作大写 F,如Fat(char)跳转到下一个指定字符前的字符处,比如t,表示跳转到下一个,前的字符处,反向操作大写 T,如T,%跳转到和当前光标所在括号匹配的括号处*和#匹配光标所在单词,*移动到下一个,#移动到上一个
文本编辑
在 Normal 模式下,可以通过下面的命令进行文本编辑:
a在当前光标后插入o在当前行后插入新行O在当前行前插入新行dd删除当前行,并且会复制到剪贴板中yy复制当前行p黏贴cw删除当前光标所在位置直到单词结尾的内容u撤销操作ctrl r恢复操作
重复操作
可以通过在命令前加数字量词来重复操作,比如:
4dd, 删除四行2p, 黏贴 2 次12k, 向上移动 12 行10ilove [ESC], 重复输入 10 次love
另外"."号可以重复上次命令。
文本选择
在可视化选择(Visual)模式下,可以选择某个区域。比如,有这样的一串文本 Number('123'),如果当前光标在 2 的位置,则:
vi'会选择 123va'会选择'123'vi)会选择'123'va)会选择('123')
另外,在 Visual 模式下,通过hjkl移动光标可以选择相应的范围,进而对选中的文本进一步操作,比如删除(d),复制(y),合并成一行(J)等等。