# 快捷键

## **常用的状态切换按键**

**1、Normal Mode -> Insert Mode**

i 小写字母i，在光标位置插入\
a 小写字母a，在光标的下一个位置插入\
I 大写字母I，在光标所在行的第一个非空格处插入\
A 大写字母A，在光标所在行的最后一个字符处插入\
o 小写字母o，在光标所在行的下一行处插入新行\
O 大写字母O，在光标所在行的上一行处插入新航\
r 小写字母r，替换光标所在处的字符一次\
R 大写字母R，持续替换光标所在处的字符，直到按下ESC

**2、Normal Mode -> Command-line Mode**

:w 保存文件\
:w! 强制保存文件（前提是用户有修改文件访问权限的权限）\
:q 退出缓冲区\
:q! 强制退出缓冲区而不保存\
:wq 保存文件并退出缓冲区\
:wq! 强制保存文件并退出缓冲区（前提是用户有修改文件访问权限的权限）

:w 另存为名为filename文件\
:n1,n2 w 将n1行到n2行的数据另存为名为filename文件\
:x 如果文件有更改，则保存后退出。否则直接退出。

**3、Insert Mode -> Normal Mode**

按下ESC键

**4、Command-line -> Normal Mode**

按下ESC键\


## **常用光标移动按键**

**1、光标字符操作**

j 向下\
k 向上\
h 向左\
l 向右\
$ 光标移动到行尾（End），注意要按Shift键\
0 光标移动到行首（Home）\
^ 光标移动到行首第一个非空白字符（Home），注意要按Shift键

**2、光标词操作**

w 光标移动到后一词的词首\
W 光标移动到后一词的词首且忽略标点符号\
e 光标移动到后一词的词尾\
E 光标移动到后一词的词尾且忽略标点符号\
b 光标移动到前一词的词首\
B 光标移动到前一词的词首且忽略标点符号

**3、光标句操作**

) 光标移动到后一句的句首\
( 光标移动到前一句的句首\
% 配合“(”和“)”使用，寻找相匹配的另一半

**4、光标行操作**

G 光标移动到文档的最后一行的第一个非空白字符\
nG 光标移动到文档的第n行，相当于”:n”\
gg 光标移动到文档的第1行的第一个非空白字符，相当于”1G”，也相当于”:1″\
光标向下移动N行

**5、光标段操作**

} 光标移动到下一段的段首\
{ 光标移动到上一段的段首\
% 配合“(”和“)”使用，寻找相匹配的另一半

**6、光标页操作**

Ctrl+f 向下翻页（Pagedown）\
Ctrl+b 向上翻页（Pageup）\
Ctrl+d 向下翻半页\
Ctrl+u 向上翻半页\
H 光标移动到目前显示页的第一行\
M 光标移动到目前显示页的中间行\
L 光标移动到目前显示页的最后一行

**7、光标自由操作**

Ctrl+o 回到光标的上一位置

## **常用编辑操作按键**

**1、删除操作（delete）**

dd 删除光标所在行\
ndd 删除从光标所在行开始，向下的n行\
d1G 删除从光标所在行开始，到第一行的所有行\
dG 删除从光标所在行开始，到最后一行的所有行\
d$ 删除从光标所在位置，到行尾的所有字符\
d0 删除从光标所在位置，到行首的所有字符

**2、复制操作（yank）**

yy 复制光标所在行\
nyy 复制从光标所在行开始，向下的n行\
y1G 复制从光标所在行开始，到第一行的所有行\
yG 复制从光标所在行开始，到最后一行的所有行\
y$ 复制从光标所在位置，到行尾的所有字符\
y0 复制从光标所在位置，到行首的所有字符

**3、粘贴操作（paste）**

p 小写字母p，粘贴剪贴板中的数据，从光标所在行的下一行开始\
P 大写字母P，粘贴剪贴板中的数据，从光标所在行的上一行开始

**4、撤销与重做操作（undo，redo）**

u （Undo）撤销上一个操作\
Ctrl+r （Redo）重做上一个操作

**5、重复操作**

. 重复上一操作

**6、替换操作（replace）**

r 替换光标所在处字符\
R 进入替换模式，直至按ESC退出\
cc 替换光标所在行\
cw 替换光标所在的英文单词\
\~ 转换大小写

**7、排版操作**

:le 光标所在行左对齐\
:ri 光标所在行右对齐\
:ce 光标所在行居中

## **常用多缓冲区操作按键**

**1、多文件编辑模式**

argument list模式，就是在打开vim编辑器时，携带多个文件路径参数。\
buffer list模式，就是在进入vim编辑器后，打开多个缓冲区进行编辑。

**2、单一缓冲区打开多个文件**

:files 显示目前打开了哪些文件\
:n 切换到下一个缓冲区内容\
:N 切换到上一个缓冲区内容\
:2n 切换到下下个缓冲区内容\
:bn 下一个缓冲区内容（buffer next）\
:bp 上一个缓冲区内容（buffer previous）

**3、多个缓冲区打开多个文件**

:sp \[filename] 打开一个新的缓冲区，如果有filename则内容为该文件，否则为当前文件\
Ctrl+w n 新建一个缓冲区\
Ctrl+w q 退出光标所在的缓冲区\
Ctrl+w j 光标移动到下一缓冲区\
Ctrl+w k 光标移动到上一缓冲区\
Ctrl+w l 光标移动到右一缓冲区\
Ctrl+w h 光标移动到左一缓冲区\
Ctrl+w v 左右切割窗口新建缓冲区\
Ctrl+w s 上下切割窗口新建缓冲区\
Ctrl+w o 使光标所在缓冲区最大化，其他缓冲区隐藏

## **常用搜索与书签操作快捷键**

**1. 搜索字符串**

/string 向下搜索字符串“string”?string 向上搜索字符串“string”

**2. 重复上次搜索**

n 根据上次搜索条件找到下一个匹配的字符串N 根据上次搜索条件找到上一个匹配的字符串

**3. 搜索单词**

\* 向下搜索光标所在处的单词（完全匹配）# 向上搜索光标所在处的单词（完全匹配）g\* 向下搜索光标所在处的单词（部分匹配）g# 向上搜索光标所在处的单词（部分匹配）
