vi全屏幕编辑器 
vi(Visual)是以视觉为导向的全屏幕编辑器、共分为三种方式(mode): 
command方式: 
任何输入都会作为编辑命令,而不会出现在屏幕上,若输入错误则有“岬”的声音;任何输入 
都引起立即反映 
insert方式: 
任何输入的数据都置于编辑寄存器。在command方式下输入(I,a,A等),可进入insert方式,insert方式下按ESC,可跳回command方式。 
escape方式: 
以“:”或者“/”为前导的指令,出现在屏幕的最下一行,任何输入都被当成特别指令。 
进入vi(在系统提示符下面输入以下指令): 
vi  进入vi而不读入任何文件 
vi filename 进入vi并读入指定名称的文件(新、旧文件均可)。 
vi +n filename进入vi并且由文件的第几行开始。 
vi +filename  进入vi并且由文件的最后一行开始。 
vi + /Word filename 进入vi并且由文件的word这个字开始。 
vi filename(s)  进入vi并且将各指定文件列入名单内,第一个文件先读入。 
vedit 进入vi并且在输入方式时会在状态行显示“INSERT MODE"。 
编辑数个文件(利用vi filename(s))进入vi后) 
:args 显示编辑名单中的各个文件名 
:n读入编辑名单中的下一个文件 
:rew读入编辑名单中的第一个文件 
:e# 读入编辑名单内的前一个文件 
:e file 读入另一个文件进vi(此文件可不在编辑名单内),若原文件经修改还没有存档,则应先以: w 存档。 
:e! file强迫读入另一个文件进入vi,原文件不作存档动作。 
存储及退出vi 
:w filename 存入指定文件,但未退出vi(若未指定文件名则为当前工作的文件名)。 
:wq 或者 :x或者zz 存文件,并且退出vi. 
:q不作任何修改并退出vi。 
:q! 放弃任何修改并退出vi。 
:!command 暂时退出vi并执行shell指令,执行完毕后再回到vi。 
:sh 暂时退出vi到系统下,结束时按Ctrl + d则回到vi。 
加数据指令 
i 在关标位置开始插入字符,结束时候按ESC键。 
I 在光标所在行的最前面开始加字,结束时按ESC键。 
a 在光标位置后开始加字,结束时按ESC键。 
A 在光标所在行的最后面开始加字,结束时按ESC键。 
o 在光标下加一空白行并开始加字,结束时按ESC键。 
O 在光标上加一空白行并开始加字,结束时按ESC键。 
!command执行shell指令,并把结果加在光标所在行的下一行。 
删除指令 
nx删除由光标位置起始的n个字符(含光标位置,按一个x表示删除光标所在的字符) 
nX  删除由光标位置起始的n个字符(不含光标位置)。 
ndw 删除光标位置其实的n个字符组(word)。 
d0  将行的开始到光标位置的字符全部删除。 
d$ 或D  将光标位置起始到行尾的字符全部删除。 
ndd 将光标位置起始的n行(整行)删除(dd表示删除光标所在行)。 
:start,endd 删除文件的第start到end行。 
关标移动 
0 移到一行的开始 
$ 移到一行的最后 
[ 移到文件开始位置 
] 移到文件结束位置 
nh往左移n位 
nl或者spacebar  往右移n位 
nk向上移n行 
n+向上移n行,光标在该行的起始 
ni  向下移n行 
n-向下移n行,光标在该行的起始 
H 移到屏幕的左上角 
M 移到屏幕的中间行开头 
L 移到屏幕的最后一行 
G 移到文件的最后一行 
nG或者:n移到文件的第n行 
nw右移n个字组,标点符号属于字组 
nW右移n个字组,标点符号不属于字组 
nb左移n个字组,标点符号属于字组 
nB左移n个字组,标点符号不属于字组 
Ctrl + u屏幕上卷半个菜单 
Ctrl + d  屏幕下卷半个菜单 
Ctrl + b  屏幕上卷一个菜单 
Ctrl + F  屏幕下卷一个菜单 
修改指令 
r 修改光标文件的字符 
R 从光标位置开始修改,结束时按ESC键 
new 更改n组字符,结束时按ESC键 
ncc 从光标所在位置开始更改n行,结束时按ESC键 
重排各行长度 
i 并按Enter将该行由光标所在处断开,并进入insert方式 
J 把下一行的数据连接到本行之后 
寻找指令 
/text 从光标位置往下找字串text 
?text 从光标位置往上找字串text 
n 继续找下一个字串(在输入上面的寻找指令之后使用) 
寻找并且取代指令 
:getxt1/s/ /text2/options 将各行的text1替换为text2 
option=g表示文件中所有的text1均被取代,若未输入任何option,则只有各行中的第一个出现的text1被取代 
option=go 在屏幕显示各取代的行 
option=gc 在每个字串取代之前要求确认 
Start,endgtext1/s/ / text2/options 同上,只寻找并取代第start~end行。 
或:Start,ends/text1/text2/options 
复制及移动文件 
:first,last co dest 将first 到last行的数据复制到目标行(dest)下面 
:Start,endm dest将start 到 end行的数据移动到目标行(dest)下。 
:r filename 将指定文件的内容读入光标所在行下。 
nY  将光标所在位置开始的n行数据暂存 
p 复制暂存数据在光标的下一行 
P 复制暂存数据在光标的上一行 
其他命令 
. 重复前一指令 
u 取消前一指令 
Ctrl + l刷新屏幕显示 
:set number 显示文件的行号,但不会存文件 
:set nonumber 解除行号显示 
:set ai 设置每行起始位置(以光标当前位置为起始) 
:set noai 取消行起始位置设定 
:f 或<Ctrl> + g 告诉用户有关现行编辑文件的数据。 
              
标签:


