Vi 编辑器命令说明

Vi 编辑器是Linux和Unix上最基本的文本编辑器,特别是在无图形界面的服务器上面。它可以执行输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制。

在Linux下字符是区分大小写的,在这里操作命令也不例外。

进入vi的命令

1
2
3
4
5
6
vi filename                         #打开或新建文件,并将光标置于第一行首 
vi +n filename                      #打开文件,并将光标置于第n行首 
vi + filename                       #打开文件,并将光标置于最后一行首 
vi +/pattern filename               #打开文件,并将光标置于第一个与pattern匹配的串处 
vi -r filename                      #在上次正用vi编辑时发生系统崩溃,恢复filename 
vi filename1 filename2              #打开多个文件,依次进行编辑

移动光标类命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
h                   #光标左移一个字符 
l                   #光标右移一个字符 
space               #光标右移一个字符 
Backspace           #光标左移一个字符 
k或Ctrl+p           #光标上移一行 
j或Ctrl+n           #光标下移一行 
Enter               #光标下移一行 
w                   #光标右移一个字至字首 
b                   #光标左移一个字至字首 
e                   #光标右移一个字至字尾 
)                   #光标移至句尾 
(                   #光标移至句首 
}                   #光标移至段落开头 
{                   #光标移至段落结尾 
nG                  #光标移至第n行首 
n+                  #光标下移n行 
n-                  #光标上移n行 
n$                  #光标移至第n行尾 
H                   #光标移至屏幕顶行 
M                   #光标移至屏幕中间行 
L                   #光标移至屏幕最后行 
0                   #光标移至当前行首 
$                   #光标移至当前行尾

屏幕翻滚类命令

1
2
3
4
5
Ctrl+u        #向文件首翻半屏 
Ctrl+d        #向文件尾翻半屏 
Ctrl+f        #向文件尾翻一屏 
Ctrl+b        #向文件首翻一屏 
nz            #将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部

插入文本类命令

1
2
3
4
5
6
7
8
9
10
11
12
i               #在光标前 
I               #在当前行首 
a               #光标后 
A               #在当前行尾 
o               #在当前行之下新开一行 
O               #在当前行之上新开一行 
r               #替换当前字符 
R               #替换当前字符及其后的字符,直至按ESC键 
s               #从当前光标位置处开始,以输入的文本替代指定数目的字符 
S               #删除指定数目的行,并以所输入文本代替之 
ncw             #修改指定数目的字 
nCC             #修改指定数目的行

命令行方式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
:n1,n2 co n3        #将n1行到n2行之间的内容拷贝到第n3行下 
:n1,n2 m n3         #将n1行到n2行之间的内容移至到第n3行下 
:n1,n2 d            #将n1行到n2行之间的内容删除 
:w                  #保存当前文件 
:e filename         #打开文件filename进行编辑 
: x                 #保存当前文件并退出 
:q                  #退出vi 
:q!                 #不保存文件并退出vi 
:!command           #执行shell命令command 

/pattern            #从光标开始处向文件尾搜索pattern 
?pattern            #从光标开始处向文件首搜索pattern 
n                   #在同一方向重复上一次搜索命令 
N                   #在反方向上重复上一次搜索命令 
:s/p1/p2/g          #将当前行中所有p1均用p2替代 
:n1,n2s/p1/p2/g     #将第n1至n2行中所有p1均用p2替代 
:g/p1/s//p2/g       #将文件中所有p1均用p2替换

删除命令

1
2
3
4
5
6
ndw                #删除光标处开始及其后的n-1个字 
do                 #删至行首 
d$                 #删至行尾 
ndd                #删除当前行及其后n-1行 
x                  #删除一个字符
Ctrl+u             #删除输入方式下所输入的文本,和撤消类似

文本编辑

1
2
3
4
5
yy          #将一行文本移到缺省缓冲区中
yn          #将下一个词移到缺省缓冲区中
ynw         #将后面的n个词移到缺省缓冲区中
yny         #将后面的n行移到缺省缓冲区中
p           #将缺省缓冲区内容输出