史上最全Vim快捷键键位图(入门到进阶)
经典版
下面这个键位图应该是大家最常看见的经典版了。
classic
对应的简体中文版
先放一个总的图
分解图
其实经典版是一系列的入门教程键位图的组合结果,下面是不同编辑模式下的键位图。
ps:后面是我手工翻译的,本来还想用ps搞到图片上,但是有点麻烦,后面再说吧。
基本编辑模式
基本:
h j k l
是vi/vim的方向键,使用他们就像使用普通的方向键。
i
进入插入模式,光标会从方块编程竖线,你可以输入文字。使用Esc
回到普通模式。
x
删除当前字符,X
删除当前字符左边那个字符
A
附加模式,只不过是在当前行的最后附加
注意:插入模式非常想普通编辑器,你可以使用光标、导航键,删除等等。
进阶:
u
回退最后一次操作。传统的vi只支持一层回退,但是vim可以无限回退。CTRL+R
来重做(把回退的操作重新执行)。
0
跳到硬行首,$
跳到行尾。^
跳到软行首,即第一个非空字符。
使用w b e
来移动到下一单词。一个单词是一系列字母或标点的序列。
使用W B E
移动到下一个真实单词,即非空字符。
使用R
进入带有叠加光标的持续替换模式,输入将会一直覆盖已有字符。
:w
后回车可以保存。:q
后回车可以离开。注意敲:
时的视图。
动作与重做
基础:
f
后面跟任意键,移动光标到本行的下一个这个字符,相当于行内查找并定位。F
同样功能,但是方向相反
t
和T
也是这个功能,但是他们搜索到时把光标停在字符的前面
d
是删除,后面跟任何动作,直接删除到动作到达的地方,比如dw
删除到下一个单词的开头,df-
删除到这行的下一个-。
c
是修改,和d
功能相似,但是删除完之后他会将你留在插入模式。
一些动作,例如j
和k
是选择行为范围的-删除将会包含完整的开始和结束行
.
重复上一次编辑操作:文字输入,删除,修改之类的。动作将在新地方被重新计算。
进阶:
在任何命令/动作前加上数量,将会重复他那么多次。
d2w
将会删除到两个单词
d2t,
将会删除到第二个逗号,但是不包含第二个逗号
2i
将会将会重复插入你输入的文本当你按esc退出插入模式
重复按操作符(比如cc
或dd
)将会对整行进行操作。
只有在vim中,v
将会进入可视模式,移动光标,将会把范围内的文字高亮并选中,按一个操作将会操作可视范围选中的文本。
V
进入行可视模式,他跟v
很像,但是他是以行为单位选择
CTRL-v
将会进行块列选择,就像notepad++的行编辑一样
复制和粘贴
基础:
y
后跟任何动作来进行’抽取’(复制)
'p’粘贴在后面(如果是字符范围的,粘贴到右边。如果是行范围的,粘贴到下面)
P
粘贴在前面
yy
拷贝整行
y
同样工作于可视模式
进阶:
"
和a-z
字符,如果在任何复制/删除/粘贴命令前被输入,将会选择对应寄存器
A-Z
寄存器和小写寄存器类似,但是他们是往里附加内容
"*
和"+
选择系统剪切板
o
会在当前行的下一行插入一个空行,并进入插入模式
O
和o
类似,但他实在当前行的上面一行插入
搜索
基础:
/
是基础的搜索动作。在斜杠后键入你想搜索的文本,然后敲回车。你可以在操作之后使用搜索动作,或者在可视模式使用。
?
做同样的动作,但他是反向的
n
重复在相同方向再次执行最后一次搜索。N
类似,但是是反方向的。
需要注意的是,搜索是支持正则的
进阶:
以下两个很有用的动作只在vim有效:
*
搜索处于光标下标示符(不是光标下的单个字母,而是标示符)
#
和*
类似,但是是相反的方向
标记和宏
基础:
m
后跟随a-z
打书签
` (就是波浪号~底下的那个)后跟字符跳转到标签
'
(单引号)后跟字符跳转到标签所在行的第一个非空字符位置
A-Z
书签是全局的,a-z
书签是每缓冲区的(意思应该是每文件)
`.(点号和句号)跳转到最后修改的地方
进阶:
宏
q
后跟a-z
开始录制宏
之后再跟一个q
,停止录制
@
跟字符,播放这个宏
@@
重复最后一次播放的宏
各种动作
%
跳转到匹配的()[]
H
M
L
跳转到屏幕的顶部,中间,底部
G
跳转到文件尾,gg
跳转到文件顶部。两者前面加行号跳转到行号。另一种办法是命令模式下直接敲行号。
-
+
跳转到前一行/下一行
K
不是严格意义上的动作。跳转到光标下关键字的帮助信息:vim帮助,man手册之类的
(
)
跳转到当前句子的首尾
{
}
跳转到上一个,下一个段落(跳转到上一个下一个空行)
[[
跳转到前一个处于首行的{
]]
跳转到后一个处于首行的{
各种命令
基础:
J
将当前行和下一行组合为一行,或者所有可视模式选中的行
r
跟一个字符替换光标下的字符
C
和c$
是一个作用,修改到行尾
D
和d$
一样,删除到行尾
Y
和yy
一样,直接复制整行
s
删除光标下的字符并进入插入模式
S
删除整行进入插入模式
进阶:
>
及一个动作,缩进一行或多行
<
反缩进
=
所有这些操作都可以工作于可视模式,也可以在当前行重复缩进(>>
)
~
将光标下字符变为大写
其他
I
到行首插入
a
附加模式,插入到当前字符后
;
重复最后一次f
t
F
T
动作
,
以相反方向重复最后一次f
t
F
T
动作
其他版本
入门版
基本操作的入门版。图片模糊可以点击查看原图,下同。
进阶版
增强版
下图是一个更新时间较新的现代版,含有的信息也更丰富。
文字版
不熟的键位
基本编辑模式
X
删除当前字符左边那个字符
u
回退最后一次操作。传统的vi只支持一层回退,但是vim可以无限回退。CTRL+R
来重做(把回退的操作重新执行)。
^
跳到软行首,即第一个非空字符。
使用W B E
移动到下一个真实单词,即非空字符。
动作与重做
F
同样功能,但是方向相反
t
和T
也是这个功能,但是他们搜索到时把光标停在字符的前面
c
是修改,和d
功能相似,但是删除完之后他会将你留在插入模式。
一些动作,例如j
和k
是选择行为范围的-删除将会包含完整的开始和结束行
.
重复上一次编辑操作:文字输入,删除,修改之类的。动作将在新地方被重新计算。
V
进入行可视模式,他跟v
很像,但是他是以行为单位选择
CTRL-v
将会进行块列选择,就像notepad++的行编辑一样
复制和粘贴
"
和a-z
字符,如果在任何复制/删除/粘贴命令前被输入,将会选择对应寄存器
A-Z
寄存器和小写寄存器类似,但是他们是往里附加内容
"*
和"+
选择系统剪切板
搜索
/
是基础的搜索动作。在斜杠后键入你想搜索的文本,然后敲回车。你可以在操作之后使用搜索动作,或者在可视模式使用。
?
做同样的动作,但他是反向的
n
重复在相同方向再次执行最后一次搜索。N
类似,但是是反方向的。
需要注意的是,搜索是支持正则的
*
搜索处于光标下标示符(不是光标下的单个字母,而是标示符)
#
和*
类似,但是是相反的方向
标记和宏
m
后跟随a-z
打书签
` (就是波浪号~底下的那个)后跟字符跳转到标签
'
(单引号)后跟字符跳转到标签所在行的第一个非空字符位置
A-Z
书签是全局的,a-z
书签是每缓冲区的(意思应该是每文件)
`.(点号和句号)跳转到最后修改的地方
q
后跟a-z
开始录制宏
之后再跟一个q
,停止录制
@
跟字符,播放这个宏
@@
重复最后一次播放的宏
各种动作
%
跳转到匹配的()[]
H
M
L
跳转到屏幕的顶部,中间,底部
G
跳转到文件尾,gg
跳转到文件顶部。两者前面加行号跳转到行号。另一种办法是命令模式下直接敲行号。
-
+
跳转到前一行/下一行
K
不是严格意义上的动作。跳转到光标下关键字的帮助信息:vim帮助,man手册之类的
(
)
跳转到当前句子的首尾
{
}
跳转到上一个,下一个段落(跳转到上一个下一个空行)
[[
跳转到前一个处于首行的{
]]
跳转到后一个处于首行的{
各种命令:
J
将当前行和下一行组合为一行,或者所有可视模式选中的行
C
和c$
是一个作用,修改到行尾
D
和d$
一样,删除到行尾
Y
和yy
一样,直接复制整行
s
删除光标下的字符并进入插入模式
S
删除整行进入插入模式
>
及一个动作,缩进一行或多行
<
反缩进
=
所有这些操作都可以工作于可视模式,也可以在当前行重复缩进(>>
)
~
将光标下字符变为大写