初识vi编辑器

时间:2023-03-08 17:57:24
初识vi编辑器

vi基本概念既不介绍了,百度,wiki上都有.下面稍微总结下我所学的vi吧

1.vi分为三种状态:命令模式(command mode);插入模式(insert mode);底行模式(last line mode)

  (1).命令行模式-command mode

    就是控制屏幕光标的移动,主要是进入插入模式和底行模式的空档(就像手动档一样,换档都是先进入空档在到另一个档位)

  (2).插入模式(insert mode)

    名副其实的插入模式,在此模式下,你只能作文本的插入动作(这儿强调只能),也只有在此模式下,才能对文档进行文字输入

  (3).底行模式(last line mode)

    所见即所得,这就是在最底行操作的模式,一般是对当前编辑的文本进行保存或者退出.

-->tip1:用vi命令进入vi编辑器,处于命令模式.之后最基本以及常规的做法是:1.[i]字母进入插入模式;2.[:]则进入底行模式.3.任何模式按[ESC]键都会返回命令模式.

2.以下详细介绍各种模式中的命令的详细用法  

  (I.命令行模式:

    1). 插入模式

      按「i」切换进入插入模式「insert mode」,按"i"进入插入模式后是从光标当前位置开始输入文件;        按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;   

      按「o」进入插入模式后,是插入新的一行,从行首开始输入文字。

    2). 从插入模式切换为命令行模式

      按「ESC」键。

    3). 移动光标   

      vi可以直接用键盘上的光标来上下左右移动,但正规的vi是用小写英文字母「h」、「j」、「k」、        「l」,分别控制光标左、下、上、右移一格。   

      按「ctrl」+「b」:屏幕往"后"移动一页。   

      按「ctrl」+「f」:屏幕往"前"移动一页。   

      按「ctrl」+「u」:屏幕往"后"移动半页。   

按「ctrl」+「d」:屏幕往"前"移动半页。   

      按数字「0」:移到文章的开头。   

      按「G」:移动到文章的最后。   

      按「$」:移动到光标所在行的"行尾"。   

      按「^」:移动到光标所在行的"行首"   

      按「w」:光标跳到下个字的开头   

      按「e」:光标跳到下个字的字尾   

      按「b」:光标回到上个字的开头   

      按「#l」:光标移到该行的第#个位置,如:5l,56l。

    4). 删除文字   

      「x」:每按一次,删除光标所在位置的"后面"一个字符。   

      「#x」:例如,「6x」表示删除光标所在位置的"后面"6个字符。   

      「X」:大写的X,每按一次,删除光标所在位置的"前面"一个字符。   

      「#X」:例如,「20X」表示删除光标所在位置的"前面"20个字符。   

      「dd」:删除光标所在行。   

      「#dd」:从光标所在行开始删除#行

    5). 复制   

      「yw」:将光标所在之处到字尾的字符复制到缓冲区中。   

      「#yw」:复制#个字到缓冲区   

      「yy」:复制光标所在行到缓冲区。   

      「#yy」:例如,「6yy」表示拷贝从光标所在的该行"往下数"6行文字。   

      「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与"y"有关的复制命令都必须与"p"配合才能完成复制与粘贴功能。

    6). 替换   

      「r」:替换光标所在处的字符。   

      「R」:替换光标所到之处的字符,直到按下「ESC」键为止。

    7). 回复上一次操作   

      「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次"u"可以执行多次回复。

    8). 更改  

      「cw」:更改光标所在处的字到字尾处   

      「c#w」:例如,「c3w」表示更改3个字

    9). 跳至指定的行   

      「ctrl」+「g」列出光标所在行的行号。   

      「#G」:例如,「15G」,表示移动光标至文章的第15行行首。

  (II.底行模式Last line mode下命令简介   

     在使用「last line mode」之前,请记住先按「ESC」键确定您已经处于「command mode」下后,再按「:」冒号即可进入「last line mode」。

    A) 列出行号  

      「set nu」:输入「set nu」后,会在文件中的每一行前面列出行号。

    B) 跳到文件中的某一行  

      「#」:「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行。

    C) 查找字符  

      「/关键字」:先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往后寻找到您要的关键字为止。  

      「?关键字」:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往前寻找到您要的关键字为止。

    D) 保存文件  

      「w」:在冒号输入字母「w」就可以将文件保存起来。

    E) 离开vi  

      「q」:按「q」就是退出,如果无法离开vi,可以在「q」后跟一个「!」强制离开vi。  

      「qw」:一般建议离开时,搭配「w」一起使用,这样在退出的时候还可以保存文件。

3.最后附上vi使用手册:

VI是unix上最常用的文本编辑工具,作为unix软件测试人员,有必要熟练掌握它。

进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi +n filename :打开文件,并将光标置于第n行首

vi + filename :打开文件,并将光标置于最后一行首

vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处

vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename

vi filename....filename :打开多个文件,依次编辑

移动光标类命令

h :光标左移一个字符

l :光标右移一个字符

space:光标右移一个字符

Backspace:光标左移一个字符

k或Ctrl+p:光标上移一行

j或Ctrl+n :光标下移一行

Enter :光标下移一行 w或W :光标右移一个字至字首

b或B :光标左移一个字至字首

e或E :光标右移一个字j至字尾

) :光标移至句尾

( :光标移至句首

}:光标移至段落开头

{:光标移至段落结尾

nG:光标移至第n行首

n+:光标下移n行

n-:光标上移n行

n$:光标移至第n行尾

H :光标移至屏幕顶行

M :光标移至屏幕中间行

L :光标移至屏幕最后行

0:(注意是数字零)光标移至当前行首

$:光标移至当前行尾 屏幕翻滚类命令

Ctrl+u:向文件首翻半屏

Ctrl+d:向文件尾翻半屏

Ctrl+f:向文件尾翻一屏

Ctrl+b;向文件首翻一屏

nz:将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。

插入文本类命令

i :在光标前

I :在当前行首

a:光标后

A:在当前行尾

o:在当前行之下新开一行

O:在当前行之上新开一行

r:替换当前字符

R:替换当前字符及其后的字符,直至按ESC键

s:从当前光标位置处开始,以输入的文本替代指定数目的字符

S:删除指定数目的行,并以所输入文本代替之

ncw或nCW:修改指定数目的字

nCC:修改指定数目的行

删除命令

ndw或ndW:删除光标处开始及其后的n-1个字

do:删至行首

d$:删至行尾

ndd:删除当前行及其后n-1行

x或X:删除一个字符,x删除光标后的,而X删除光标前的

Ctrl+u:删除输入方式下所输入的文本

搜索及替换命令

/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替换

选项设置

all:列出所有选项设置情况

term:设置终端类型

ignorance:在搜索中忽略大小写

list:显示制表位(Ctrl+I)和行尾标志

($) number:显示行号

report:显示由面向行的命令修改过的数目

terse:显示简短的警告信息

warn:在转到别的文件时若没保存当前文件则显示NO

write信息

nomagic:允许在搜索模式中,使用前面不带“\”的特殊字符

nowrapscan:禁止vi在搜索到达文件两端时,又从另一端开始

mesg:允许vi显示其他用户用write写到自己终端上的信息

最后行方式命令

: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

:n1,n2 w!command:将文件中n1行至n2行的内容作为command的输入并执行之,若不指 定n1,n2,则表示将整个文件内容作为command的输入

:r!command:将命令command的输出结果放到当前行 。