「TIL」常用的 Vim 操作
在各种 IDE 中使用 Vim Key Bindings 已经有将近一年时间了,在日常使用中其实并没有特别多很复杂的操作,基本上简单的光标移动和跳转、复制剪切、查找替换等操作已经可以覆盖大多数的日常使用场景了,再有更复杂的操作想要实现,会现用现查。今天又重新梳理和学习了一些平时会用到但是没有记下来的操作,这里做一个简单的记录。
光标移动
在普通模式(normal mode)下,最基本的光标移动操作就是四个方向的移动,按下
h, j, k, l 后光标会分别对应向左,下,上,右移动。按
w 或 b 可以分别向右或向左移动到下一个或上一个单词的开头,而 W 和 B 则是移动到下一个或上一个空格后的单词的开头。按
0 或 $ 可以分别移动到当前行的开头或结尾,按 ^ 则会移动到当前行的首个字符。按
Ctrl+f 或 Ctrl+b 可以分别向下或向上翻一页。如果想要在匹配的括号(如
(),[],{} )间移动光标,可以按 % 进行跳转。假设一个文件内定义了多个类,每一个类都是一个代码块,要在这些代码块间跳转可以按
[[ 或 ]] 跳转到上一个或下一个代码块的开头;如果想要在方法间跳转,可以按 [m 或 ]m 跳转到上一个或下一个类或方法的开头。按
{ 或 } 可以跳转到上一个或下一个空行。按
gg 或 G 可以跳转到文件顶部或底部,按 nG 或 :n 可以跳转到文件的第 n 行,n 为任意整数。大部分操作都可以搭配一个数字 n 使其重复执行 n 次,例如
2j 表示向下移动 2 次光标,2]m 表示跳转到当前光标往下第 2 个方法处。输入模式
在普通模式下可以通过以下一些常用的操作方式进入输入模式(insert mode):
- 按
i或I在当前光标位置或当前行首字符处插入文本,进入输入模式
- 按
a或A在当前光标后的位置或当前行末插入文本,进入输入模式
- 按
o或O在当前光标所在行的下一行或上一行插入文本,进入输入模式
复制剪切
- 按
Y复制光标位置到行末的字符
- 按
yy复制当前行
- 按
x或X剪切光标所在位置或光标前一个位置的字符
- 按
D剪切光标位置到行末的字符
- 按
dd剪切当前行
粘贴文本
使用 Vim 的复制或剪切操作后,可以在同一个工作空间中任意位置粘贴对应的文本,按
p 或 P 在光标后或光标前进行粘贴的操作。文本选择
按下
v 或 V 可以进入可视化模式(visual mode),前者的文本选择是以字符为单位的,而后者的文本选择是以行为单位的。在可视化模式下,可以配合光标移动的一些操作来实现快速选择文本,例如按 V 进入行可视化模式后按 5j 即可快速选中当前行以及下面5行的内容。查找替换
字符查找分为行内搜索和整个文件内的搜索:
- 按下
f或F后输入单个字符在当前行内向右或向左查找首个匹配的字符
- 按下
/后输入要查找的文本,然后按回车进入搜索模式,按n或N可以跳转到下一个或上一个匹配的文本处
有时候会需要在查找内容的同时将匹配的文本替换成其他值,可以在普通模式下通过以下命令完成:
- 输入
:s/old/new/,然后按回车,可以将当前行中的第一个 old 替换为 new
- 输入
:s/old/new/g,然后按回车,可以将当前行中的所有 old 替换为 new
- 输入
:%s/old/new/g,然后按回车,可以将整个文件中的所有 old 替换为 new
如果想要在匹配的项被替换前进行确认,在上述命令后加上
c 会对每一个匹配项的操作进行询问。标记
可以使用标记 (mark) 功能来标记和跳转到文件中的某个位置,可以使用小写字母 a-z 或大写字母 A-Z 中的任意一个作为标记名称,按下
ma 则会在光标当前位置设置一个名称为 a 的标记,之后不管在当前文件的任何位置,只要按下 'a 即可跳转到标记 a 所在位置,按下 `a 则会跳转到标记所在行的首字符。宏
有时候可能会需要在一个文档内重复执行一些相同的操作,利用 Vim 的宏就可以像封装一个函数一样,把一系列操作录制下来注册成一个宏,在需要时直接调用重放这些操作。使用宏的步骤如下:
- 在普通模式下,按
q加一个字母开始录制。例如按下qr,将该宏注册为r
- 接下来的 Vim 内操作全部都会被记录,直到再次按下
q的时候,宏就录制完成了
- 使用上面录制的宏,只需要在普通模式下按下
@加字母,例如按下@r,就使用了一次宏r
- 如果想多次使用宏,可以在
@前加上数字,例如按下5@r,就会执行 5 次宏r
- 如果想重复使用上一次的宏,可以在普通模式下按下
@@
本文采用 CC BY-NC-ND 4.0 许可协议。转载或引用时请遵守协议内容!