Vim Keymaps
移动
Keymap | Description |
---|---|
h j k l | 左 下 上 右 |
w | 下个单词的词首 |
W | 下一个单词的词首(以空格区分单词) |
e | 下一个单词的词尾 |
E | 下一个单词的词尾(以空格区分单词) |
b | 上一个单词的词首 |
B | 上一个单词的词首(以空格区分单词) |
n-w/W/e/E/b/B | n 为移动的单词个数 |
<> | v 模式选中后进行缩进 |
跳转
Keymap | Description |
---|---|
% | 可以匹配{},"",(),[]之间的跳转 |
H M L | 直接跳转到当前屏幕的顶部、中部、底部 |
#H | 跳转到当前屏幕的第#行(切记是当前屏幕) |
#L | 跳转到当前屏幕的第#行(切记是当前屏幕) |
() | 移动到上/下一个句首 |
{} | 移动到上/下一个段首 |
zt | 当前编辑行为屏顶 |
zz | 当前编辑行为屏中 |
zb | 当前编辑行为屏尾 |
G | 直接跳转到文件尾部 |
gg | 直接跳转到文件顶部 |
0 | 跳转到行首 |
\$ | 跳转到行尾部 |
2$ | 跳转到向下两行的尾部 |
# | 向右跳转#个字符(#跟空格) |
#G | 跳转第#行 |
:# | 跳转第#行(#跟空格) |
fs | 跳转到下一个字母 s 之后 |
2fs | 跳转到往下第二个 s 字母之后 |
Fs | 跳转到上一个字母 s 之后 |
2Fs | 跳转到往上第二个 s 字母之后 |
[[]] | 光标向上/下跳转到代码块开头 |
gD | 光标跳转到局部变量定义处 |
'' | 光标跳转到上次停靠处 |
C-e | 向下滚动一行 |
C-y | 向上滚动一行 |
C-d | 向下滚动半屏 |
C-u | 向上滚动半屏 |
C-f | 向下滚动一屏 |
C-b | 向下滚动一屏 |
编辑
新增
Keymap | Description |
---|---|
i | 进入插入模式 |
I | 在当前行的行首插入 |
a | 在光标后插入 |
A | 在当前行的行尾插入 |
o | 在当前行之后插入新行 |
O | 在当前行之前插入新行 |
修改
Keymap | Description |
---|---|
r | 替换光标所在的字符 |
R | 替换光标所到的字符 |
cc | 取代光标所在整行 |
C | 取代到行尾部,包括光标处字符 |
c0 | 取代到行首,不包括光标处字符 |
cw | 修改光标所在的字符到该单纯结尾 |
s | 以插入的形式替换光标所在的一个字符 |
S | 以插入的模式替换整行 |
ci( | 修改配对标点符号中的文本内容(这里以小括号为例子) |
di( | 删除配对标点符号中的文本 |
yi( | 复制配对标点符号中的文本 |
vi( | v 模式下选中配对符号中的内容 |
c/d/y/va( | 剪切/删除/复制/选中成对符号及其中的内容 |
删除
Keymap | Description |
---|---|
x | 删除光标右边的字符 |
nx | 删除光标右边 n 个字符 |
X | 删除光标左边的字符 |
nX | 删除光标左边 n 个字符 |
dl | 删除当前字符,相当与 x |
dh | 删除前一个字符 |
dw | 向右删除一个单词(光标之单纯的剩余部分) |
dnw | 删除 n 个单词 |
db | 删除到上个单词的开始位置 |
de | 删除一个单词的结尾位置 |
dne | 删除光标后 n 个单词 |
dd | 删除光标所在行 |
ndd | 向下删除 n 行(包光标所在行) |
dj | 删除当前行及其下一行 |
dk | 删除当前行及其上一行 |
dG | 删除光标所在行到文本末尾 |
d1G | 删除光标所在行到第一行 |
dgg | 删除当前行到文本首部所在行 |
D | 从光标所在位置删除到行尾 |
d0 | 删除到行首,不包括光标所在字符 |
:n,$d | 删除 n 行及其后所有行 |
:1,$d | 删除所有行 |
:n1,n2d | 删除 n1 到 n2 之间的行 |
diw | 删除单词(光标在单词开头中间都一样),空格也是一个单词 |
daw | 删除一个单词和一个空格 |
dis | 删除一个句子 |
das | 删除一个句子 |
dip | 删除一个段落,光标移至该段落下一行行首 |
dap | 删除一个 ie 段落,光标移至下段最后行行首 |
daB | 删除{}及其内容 |
diB | 删除{}中的内容 |
复制/剪切/粘贴
Keymap | Description |
---|---|
yy/Y | 复制当前行 |
nyy/nY | 复制当前行以下 n 行(包括当前行) |
p/P | 粘贴在当前光标所在的行下/行上 |
ddp | 交换当前行和其下一行 |
xp | 交换两个字符的顺序(光标之后两个字符) |
Xp | 交换两个字符的顺序(光标之前两个字符) |
deep | 交换两个单词的顺序 |
ndd | 剪切当前行以下 n 行(包括当前行) |
:n1,n2d | 剪切 n2,n2 行之间的内容 |
:n2,n2 m n3 | 将 n1,n2 行之间内容移动至 n3 行之后 |