(图片来源自网络)
前言
看了网上很多关于vi/vim快捷键的汇总帖子,感觉乱乱的没有条理,自己整理了一下,方便自己记忆吧。
我整理的分类依据是模式,某一模式其实就是在做某一事情,做啥就在啥分类里面找,个人感觉比较有条理,勿喷哈……
vi的常见模式:
- 普通模式(进入vi后的默认模式,也可以叫阅读模式,只能看不能编辑。移动光标也仅对其他模式提供帮助。)
特点是最后一行显示"filename" xL xC(文件名、几行、多少字符)或最后一行为空 - 块选择模式(移动光标对文本进行选择,并删除、复制粘贴等动作。按v进入,按ESC退出)
特点是最后一行显示-- VISUAL -- - 编辑模式(键盘输入,按下字符只表示输入字符本身,按a、i或o进入,ESC退出)
特点是最后一行显示-- INSERT -- - 替换模式(输入字符替换掉光标位置的字符,并向后移动光标。按R进入,ESC退出)
特点就是最后一行显示-- REPLACE -- - 命令模式(可以理解为对整个文件及编辑器的操作,按英文半角:进入,ESC退出)
特点就是最后一行显示:
普通模式快捷键
- 光标移动类
快捷键 | 说明 |
---|---|
↑↓←→ | 移动光标 |
w | 移动到下一个单词开头 |
b | 移动到下一个单词开头 |
e | 移动到当前单词的结尾 |
^ | 光标移动到行首 |
$ | 光标移动到行尾 |
( | 移动到当前句子的开头 |
) | 移动到当前句子的结尾 |
{ | 移动到当前段落的开头 |
} | 移动到当前段落的结尾 |
ENTER | 光标移动至下一行首 |
数字ENTER | 光标移动至下数字行行首 |
gg | 光标移动到第一行 |
数字gg | 光标移动到数字行 |
G | 光标移动到最后一行 |
H | 光标移动至屏幕最上一行行首 |
L | 光标移动至屏幕最下一行行首 |
M | 光标移动至屏幕中间一行行首 |
/关键字 | 向下搜索,继续搜索n,反向搜索N |
?关键字 | 向上搜索,继续搜索n,反向搜索N |
- 删除类
快捷键 | 说明 |
---|---|
x | 删除光标处的字符 |
数字x | 从当前光标处往后删除数字个字符(包括当前字符) |
X | 删除光标前的字符 |
数字X | 从当前光标处往前删除数字个字符(不包括当前字符) |
d0 | 删除光标至行首 |
D | 删除光标至行尾 |
dw | 删除至下一个单词的开头 |
d数字w | 从当前光标处往后删除数字个单词(包括当前单词) |
dd | 删除当前行 |
D | 清空当前行内容 |
dgg | 删除当前行至第一行 |
dG | 删除当前行至最后一行 |
d数字g | 删除当前行至第数字行(数字大于当前行数向下删除,小于则向上删除) |
数字dd | 向下删除数字行 |
- 复制粘贴类
快捷键 | 说明 |
---|---|
yy | 复制当前行 |
数字yy | 向下复制数字行 |
p | 在下一行粘贴 |
P | 在上一行粘贴 |
- 其他类
快捷键 | 说明 |
---|---|
u | 撤销 |
CTRL+r | 重做 |
. | 再做一次最近一步操作 |
<< | 当前行向前缩进 |
数字<< | 当前行及下面数字行,向前缩进 |
>> | 当前行向后缩进 |
数字>> | 当前行及下面数字行,向后缩进 |
块选择模式快捷键
快捷键 | 说明 |
---|---|
v | 进入块选择模式,不选中任何字符,可通过方向键选择字符 |
V | 进入块选择模式,并选中当前行,可通过上下选择行 |
CTRL+v | 进入块选择模式,不选择任何字符,可通过左右选择字符,上下选择列 |
y | 在块选择模式中复制所选内容 |
d | 在块选择模式中删除所选内容 |
编辑模式快捷键
快捷键 | 说明 |
---|---|
a | 进入编辑模式,在光标后插入 |
A | 进入编辑模式,在当前行尾插入 |
i | 进入编辑模式,在光标前插入 |
A | 进入编辑模式,在当前行首插入 |
o | 进入编辑模式,在当前行下插入新行 |
O | 进入编辑模式,在当前行上插入新行 |
s | 进入编辑模式,并删除光标处的字符 |
S | 进入编辑模式,并清空整行 |
cw | 进入编辑模式,并删除当前单词 |
C | 进入编辑模式,并删除光标位置及后面的内容 |
cG | 进入编辑模式,并删除整行及下面所有行 |
替换模式快捷键
r字符 | 将当前光标替换为字符,不切换模式 |
R单词 | 进入替换模式,输入字符替换掉光标位置的字符,并向后移动光标,直至退出 |
命令模式快捷键
快捷键 | 说明 |
---|---|
:set nu | 显示行号 |
:set nonu | 取消行号 |
:set sw=数字 | 设置缩进宽度 |
:set ai | 打开自动缩进 |
:数字1,数字2d | 删除数字1行到数字2行 |
:%s/关键词/替换词/g | 关键词替换为替换词,类似sed命令的替换功能 |
:w | 保存 |
:q | 退出 |
:q! | 强制退出,不保存 |
:wq | 保存退出 |
:x | 保存退出 |
:wq! | 保存并强制退出 |
:e! | 不保存,整个文件重做 |
:w [file] | 另存为 |
:r [file] | 读取文件插入 |
:!命令 | 临时执行命令 |
结语
额,必须要说一下,整理是整理,但不是最全的,很多用不到的,难理解的,和极易被其他常用快捷键代替的都没有列举,基本上算是各个经典了。
其实很多快捷键还是非常有规律可循的。
Enjoy it!