Linux下Vi编辑器命令

打开编辑器命令:

vi filename  /*打开filename文件*/
vi +n filename /*打开文件,并将光标置于第n行首*/
vi + filename /*打开文件,并将光标置于最后一行首*/
vi +/pattern filename /*打开文件,并将光标置于第一个与pattern匹配的串处*/
vi -r filename /*在上次正用vi编辑时发生系统崩溃,恢复filename*/
vi filename1 filename2 /*打开多个文件,依次进行编辑*/ 
Vi编辑器包括命令模式和插入模式,命令模式下可以进行删除,保存,搜索等操作。
插入模式下进行内容的修改,插入模式按 ESC 会回到命令模式。
以下操作基本都在命令模式下,注意区分大小写。

保存操作(先输入 : 号,再输入选项,格式如下):

:w    /*保存文件*/
:w  filename  /*保存至文件filename*/
:q    /*退出编辑器*/
:q!   /*退出编辑器,且不保存*/
:wq   /*退出编辑器,且保存文件*/
:x    /*保存(如果当前文件修改过)并退出*/

移动操作:

1,方向键移动。
2,其他移动命令:

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  /*(数字零)光标移至当前行首*/
$  /*光标移至当前行尾 */
G  /*光标移至文件的底部*/

屏幕翻滚操作:

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

删除恢复操作:

x或X /*删除一个字符,x删除光标后的,而X删除光标前的*/
dd   /*删除整行*/
do   /*删至行首*/
d$   /*删至行尾*/
nx   /*删除从光标开始的n个字符*/
ndd  /*删除包括当前行在内的向下n行*/
ndw或ndW  /*删除光标处开始及其后的n-1个字*/
u    /*撤销上一步操作*/
U    /*撤销对当前行的所有操作*/
Ctrl+u /*删除输入方式下所输入的文本*/ 

搜索及替换操作:

/text   /*向光标下搜索text字符串*/
?text   /*向光标上搜索text字符串*/
n       /*向下搜索前一个搜素动作*/
N       /*向上搜索前一个搜索动作*/
:s/P1/P2   /*将当前行中首次出现的P1用P2替代*/
:s/p1/p2/g  /*将当前行中所有p1均用p2替代*/
:n1,n2 s/p1/p2/g  /*将第n1至n2行中所有p1均用p2替代*/
:%s/p1/p2/g   /*将文件中所有p1均用p2替换*/
:%s/^/text/g  /*在整个文件每一行的行首插入“text”*/
:%s/$/text/g  /*在整个文件每一行的行尾添加“text”*/

复制及粘帖操作:

yy /*将当前行复制到缓存区,也可以用"ayy"复制,a为缓冲区,a也可以替换为a到z的任意字母,可以完成多个复制任务*/
nyy /*将当前行向下n行复制到缓冲区,也可以用 "anyy"复制,a 为缓冲区,a也可以替换为a到z的任意字母,可以完成多个复制任务*/
yw  /*复制从光标开始到词尾的字符*/
nyw /*复制从光标开始的n个单词*/
y^  /*复制从光标到行首的内容*/
y$  /*复制从光标到行尾的内容*/
p   /*粘贴剪切板里的内容在光标后,如果使用了自定义缓冲区,使用"ap 进行粘贴*/
P   /*(大写P)粘贴剪切板里的内容在光标前,如果使用了自定义缓冲区,使用"aP 进行粘贴*/

插入切换到编辑模式操作:

i  /*在当前光标位置的左边添加文本*/
I  /*在当前行的末尾位置添加文本*/
a  /*在当前光标位置的右边添加文本*/
A  /*在当前行的末尾位置添加文本*/
o  /*在当前行的下面新建一行*/
O  /*在当前行的上面新建一行*/
r  /*替换当前字符*/
R  /*替换当前字符及其后的字符,直至按ESC键*/
J  /*合并光标所在行及下一行为一行*/
s  /*从当前光标位置处开始,以输入的文本替代指定数目的字符*/
S  /*删除指定数目的行,并以所输入文本代替*/
ncw或nCW  /*修改指定数目的字*/
nCC  /*修改指定数目的行*/

其他操作:

:e filename  /*打开文件名为filename的其他文件编辑*/
:set  nu     /*显示行号*/
:set nonu    /*取消显示行号*/
:n  /*用vi file1 file2 打开2个以上文件时候,切换到下一个文件*/

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注