「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 许可协议。转载或引用时请遵守协议内容!