vim 命令理解记忆
前言
最近想转 vim,高效是建立在对命令烂熟于心的基础上的。自己总结了一些方便记忆 vim 命令的点。(以 vscode 的 vim 插件为例)
vim 特点
我感觉 vim 的最大的特点就在于它的命令组合,比如说:
20dd
数字“20”就代表执行次数,“dd”是删除当前行,这个命令就代表着删除光标所在处开始的后三行。
又比如:
dG
字符“d”代表删除,字符“G”代表文末,这个命令就代表着删除光标所在行到最后一行的所有数据。
据此我们可以明白 vim 一般模式下的大致语法:
[执行次数][执行命令][执行范围]
据此,我们只需要记住常用按键的基本的功能,就能举一反三,推出各种复杂的命令。
按键基础功能
光标移动
按键 | 功能 |
---|---|
h | 光标向左移动一个字符 |
j | 光标向下移动一个字符 |
k | 光标向上移动一个字符 |
l | 光标向左移动一个字符 |
H | 屏幕顶行 |
L | 屏幕底行 |
J | 合并两行 |
f | 行内字符查找 |
G | 移动到文档最后一行 |
W,w | 下一单词 |
E,e | 词尾 |
B,b | 前一个单词 |
0 | 移动到这一行的最前面字符处 |
$ | 移动到这一行的最后面字符处 |
+ | 移动到非空格符的上一行 |
- | 移动到非空格符的下一行 |
增删改查
按键 | 功能 |
---|---|
/ | 向前搜索 |
? | 向后搜索 |
N | 查找上一处 |
n | 查找下一处 |
x | 向前删除一个字符 |
X | 向后删除一个字符 |
d | 删除 |
D | 删除行 |
Y | 拷贝行 |
y | 拷贝 |
p | 将复制的数据在光标下一层贴上 |
P | 将复制的数据在光标上一层贴上 |
c | 修改 |
C | 修改至行末 |
f | 行内字符查找 |
F | 行内字符反向查找 |
s | 删除字符并插入 |
S | 删除行并插入 |
一般模式切换到编辑模式
按键 | 功能 |
---|---|
i,I | i 为从目前光标所在处输入;I 为在目前所在行的第一个非空格符处开始输入。 |
a,A | a 为从目前光标所在的下一个字符开始输入;A 为从光标所在行的最后一个字符开始输入。 |
o,O | o 为在目前光标所在的下一行处输入新的一行;O 为在目前光标所在的上一行处输入新的一行。 |
r,R | r 只会取代光标所在的那个字符一次;R 会一直取代光标所在的文字。 |
特殊功能
按键 | 功能 |
---|---|
~ | 大小写转换 |
u | 复原上一操作 |
. | 重复上一操作 |