Linux Vim 快捷键 速查表 分类
声明:本文用图源自www.viemu.com,翻译此文档纯为兴趣爱好。如有侵权,请通知删除。谢谢。
Part 1 基础编辑
标注:
motion :移动光标或 定义操作范围。用绿色标注的键。
command:直接动作命令,如果是红色标注的键,那么会进入编辑模式。
基础内容:
Esc 键:标准模式按键,按下Esc键后,会进入到普通模式,通常会按两次,保证回退到普通模式。
h j k l 四个按键,是vi的光标键,我们使用这四个键来控制光标的上下左右移动,这四个键比我们上下左右键用起来要方便一些。
i 键 进入编辑模式,我们可以进行文本的编辑,然后使用Esc 回到普通模式。
x 键删除当前的字符,X键删除当前光标左边一位的字符。
A键会移动光标到当前行末尾然后进入到编辑模式。
附加内容:
u 键 会回滚上次的更改,传统的vi只能回滚一次,而vim支持无限次的回滚(if any)(Ctrl-R 取消 回滚)。
0 键 跳转到本行的起始位置。 $ 键 跳转到本行的末尾, ^键 跳转到本行的第一个非空字符。 (bol 缩写 begining of the line )(eol 缩写 end of the line )
w b e 键 是在"words"中跳转,"words"就是一系列字母和数字和标点符号,例如quux(foo, bar, baz); 这个会把单词和标点符号当做不同的words: quux→(→foo→, →bar→, →baz→)→;
WBE 键也是在"WORDS"中跳转,"WORDS"就是一些列的非空字符。例如quux(foo, bar, baz); quux(foo, →bar, →baz); 只会把空格隔开的的字符当做WORDS.
R 键 进入替换编辑模式,当我们按下R键后,再次按下键盘按键 会把输入内容替换当前字符,然后光标右移一位,等待用户输入内容替换当前光标的字符,然后再次右移。重复此过程直到Esc回退到普通模式。
:w 键 然后回车 -》保存当前修改。 :q 然后 回车-》退出此次编辑。 :wq 然后回车 -》保存并退出此次修改。
Part 2 操作与重复执行
标注:
motion :移动光标或 定义操作范围。用绿色标注的键。
command :直接动作命令,如果是红色标注的键,那么会进入编辑模式。
operator : 需要后面搭配{motion},来操作当前光标到目的光标的中间的字符
基础内容:
f 键 f键需要接一个用户输入按键做参数,当输入这个按键后(例如a),会跳转到本行的下一个相应的字符(a),F键与f键类似,不同的是向前寻找并跳转。
t键 和 T键 也是接收用户输入的字符作为参数,然后寻找并跳转到对应字符的前一光标位置。例如 t->a 会在bar的b光标处停止。
d 键 需要接收 {motion} 键作为参数,会删除从当前光标处到{motion}指定目的的所有字符,例如 dw 删除到下一个单词的字符,df- 删除当前字符到下一个-的所有字符。
c 键 和d 类似,不过删除文本后会进入编辑模式。 有一些操做例如jk 是行操作的。dk会删除本行及上行,而 dj删除本行及下行。
. 重复执行上一次修改操作。 例如文本输入,删除和修改。。。等操作。
附加内容:
预制一个数值,然后执行一个命令或动作,可以执行该命令或动作多次。
d 2 w 删除2个word
d 2 t , 删除 光标到第二个,逗号前的所有字符
2 i ....any text... ESC 当我们按下ESC重复输入两次内容
重复操作 cc 或dd命令 针对当前的行,cc删除当前行内容,然后进入编辑模式,dd删除当前行,后面的行上移一行。
只有在vim中, v会进入可视模式,通过motion移动,这些文本会被高亮标记,然后按下操作命令来对标记部分进行操作
V 进入行可视模式,和v类似,但是V会按行来进行选择,Ctrl-v 会按矩形块进行选择。
Part 3 复制与粘贴
标注:
motion :移动光标或 定义操作范围。用绿色标注的键。
command :直接动作命令,如果是红色标注的键,那么会进入编辑模式。
operator : 需要后面搭配{motion},来操作当前光标到目的光标的中间的字符。
基础内容:
y键 {motion} 使用y键来复制任何{motion}部分文本
p键 如果复制的是字符, 在当前光标右边一位复制粘贴的内容。 如果复制的是行,则复制到下一行。
P键 如果复制的是字符, 在当前光标左边一位复制粘贴的内容。 如果复制的是行,则复制到上一行。
yy 复制当前行。
y键 在可视模式可以使用。
使用 d c x 等命令删除的文本也会被复制。
附加内容:
在yank delete paste命令之前的 " 后紧接的a - z的字符 ,会选择一个缓冲器。 例如 两个字符串 environment variables test当光标在environment 的e位置,此时执行" a y w ,此时会将environment 复制到a缓冲器中,然后执行w后移一个words,此时我们光标在variables的v位置,此时按下" b y w 此时会将variables复制到b缓冲器中。 然后再将光标移动到test的t左边的空格位置 ,然后执行 " a p会粘贴a缓冲器中的environment,然后执行 " b p 会粘贴b缓冲器中的variables。
在yank delete paste命令之前的"后紧接A-Z 字符表示追加到缓冲器对应的a - z内。例如 两个字符串 environment variables test当光标在environment 的e位置,此时我执行" a y w ,此时会将environment 复制到a缓冲器中,然后将光标移动到variables 的v位置,然后我们" A y w这样会将 variables也加入到a缓冲器中。然后将光标移动到test的左边的空格位置,按下p会将environment variables粘贴到当前位置。
"* 或 "+选择系统的剪贴板。
o键 在下面一行开启新的空行然后进入编辑模式。
O键 在上面一行开启新的空行然后进入编辑模式。
Part 4 查找文本
标注:
motion :移动光标或 定义操作范围。用绿色标注的键。
command :直接动作命令,如果是红色标注的键,那么会进入编辑模式。
operator : 需要后面搭配{motion},来操作当前光标到目的光标的中间的字符。
基础内容:
/ 键 是基本的查找动作,输入/后再后面输入想要查找的文本,然后 回车Enter,就会从当前光标处向后查找该文本,如果查找到会跳转到该文本首个字符光标位置。
?键 与/键 功能一样,不同的是?键是向前寻找匹配文本。
n键 重复之前的查找命令 如果前一个查找是/ 则继续向后查找该文本,如果是? 查找则继续向前查找该文本。
N键 与n键类似,不同的是与上一次查找的方向相反。
注意 : 查找目标的文本会被当做是一个表达式来进行分析,例如 a*b 表示0个或多个a ,b .
^abc会表示 以abc作为行起始的文本。
[0-9] 查找下一个数字。
附加内容:
下面两个动作只在vim中才有,vi里没有
* 键 向后查找下一个当前光标下的非空的keyword
#键 向前查找下一个当前光标下的非空的keyword
Part 5 标记和宏
标注:
motion :移动光标或 定义操作范围。用绿色标注的键。
command :直接动作命令,如果是红色标注的键,那么会进入编辑模式。
operator : 需要后面搭配{motion},来操作当前光标到目的光标的中间的字符。
标记:
m键 m键后紧跟a - z的字符来设置 标记.
`键 `键后跟一个字符a - z 会跳转到该标记.
'键 '键后跟一个a - z 字符会跳转到当前行的第一个非空字符.
宏:
q键 q键后紧跟a - z 字符开始记录宏,在 输入命令后再次按下q键 停止录制宏。
@键 后跟一个 a - z的字符 开始重复定义的宏
@@键 重复执行上次的宏
宏的讲解
例如当前文本有如下3行内容,当前光标停在Monday的M位置:
Monday Tuesday Wednesday
需求如下:希望在每行开始添加注释符号#
实验如下: 1) 对Monday行 ,开始录制宏 a q a i # Esc q 2) 对Tuesday行 运行宏a j 命令下移光标到Tuesday的T位置 @ a 执行宏 a 2) 对Wednesday 运行宏a j 命令下移光标到Wednesday 的T位置
@ a 执行宏 a
Part 6 各种动作
标注:
motion :移动光标或 定义操作范围。用绿色标注的键。
command :直接动作命令,如果是红色标注的键,那么会进入编辑模式。
operator : 需要后面搭配{motion},来操作当前光标到目的光标的中间的字符。
基础内容:
%键 查找匹配的() [] {}等等 。
H键 直接跳转到屏幕顶部。
M键 直接跳转到屏幕中部。
L键 直接跳转到屏幕底部。
G键 跳转到文件的最后一月 或者 行号数字 [num]G跳转到该行。
K键 help文档
附加内容:
( 键和 )键 跳转到当前语句的起始或末尾。
{键 }键 跳转到前一个或后一个空行。
[[ 跳转到前一个{ 。
]] 跳转到后·一个{ 。
Part 6 各种命令
标注:
motion :移动光标或 定义操作范围。用绿色标注的键。
command :直接动作命令,如果是红色标注的键,那么会进入编辑模式。
operator : 需要后面搭配{motion},来操作当前光标到目的光标的中间的字符。