VI命令 (-)

上一篇 / 下一篇  2010-06-17 11:05:50

Hn HW5l7Vo v)@OL \0vi 是Visual Interface 的简称它在Linux 上的地位就仿佛Edit 程序在DOS51Testing软件测试网1C9K'ytOm
上一样它可以执行输出删除查找替换块操作等众多文本操作而51Testing软件测试网1p:P C/W)a^+@
且用户可以根据自己的需要对其进行定制这是其他编辑程序所没有的
5H1u-b/p1Gj5K0vi 不是一个排版程序它不象Word 或WPS 那样可以对字体格式段落等51Testing软件测试网7I{*^;Vy
其他属性进行编排它只是一个文本编辑程序51Testing软件测试网g"N"^Y x4@MkRjGS
vi 没有菜单只有命令且命令繁多限于篇幅本文只介绍常用的命令
[6]P2s%k+AM&p(t&@0Vi 有三种基本工作模式命令行模式文本输入模式和末行模式51Testing软件测试网(^c,muU*w
命令行模式
7v+z/t,s#]}+X0任何时候不管用户处于何种模式只要按一下ESC 键即可使vi 进入51Testing软件测试网7Qoyc0V QKt
命令行模式当在shell 环境下输入vi 命令启动vi 编辑器时也是处于该模式
o!Y Y'zn0
PM%P5P&i `8Mg(QK0在该模式下用户可以输入各种合法的vi 命令用于管理自己的文档此时
"a&cV'V5Ph6^0从键盘上输入的任何字符都被当作编辑命令来解释若输入的字符是合法的
2l/xi y4o3U&q~0vi 命令则vi 在接受用户命令之后完成相应的动作但需注意的是所输入51Testing软件测试网y'?%rd*}Zt?P
的命令并不在屏幕上显示出来若输入的字符不是vi 的合法命令vi 会响51Testing软件测试网8[ G0m0Ao^}p*?l_
铃报警
a!D6D+z3PB0文本输入模式:

cjHtf{$F051Testing软件测试网[$[*` |*eE0yFq

在命令模式下输入插入命令i 附加命令a 打开命令o 修改命令c 取代51Testing软件测试网h4s5jvqJ;Gu
命令r 或替换命令s 都可以进入文本输入模式在该模式下用户输入的任何
TV(F&y k0字符都被vi 当做文件内容保存起来并将其显示在屏幕上在文本输入过程
v3Oxi4Cr/IPB0中若想回到命令模式下按ESC 键即可

LE oMzM0

*R:BR+\.qnp,W0
:S!G,z+`P0末行模式
#_ bM.v,r(RO0在命令模式下用户按: 键即可进入末行模式下此时Vi 会在显示窗口的最
;y$F I y R!k0后一行通常也是屏幕的最后一行显示一个: 作为末行模式的提示符51Testing软件测试网riMz-\ ]w
等待用户输入命令多数文件管理命令都是在此模式下执行的如把编辑缓
QY'}^,AT1bCx*i0冲区的内容写到文件中等末行命令执行完后vi 自动回到命令模式
EAq^ m[V-M0若在末行模式下输入命令过程中改变了主意可按ESC 键或用退格键
+wTpWTQU0将输入的命令全部删除之后再按一下退格键即可使vi 回到命令模式下51Testing软件测试网om _3WI F!H

N9{(i^ E D BT_4f V0vi 的进入与退出:51Testing软件测试网Y(p dKN

iA"V{UyX0在shell 模式下键入vi 及需要编辑的文件名即可进入vi 例如51Testing软件测试网],i@:b7J,[^U
vi example.txt51Testing软件测试网+@I+G9|*ZIX*y?%bm
即可编辑example.txt 文件如果该文件存在则编辑界面中会显示该文件的51Testing软件测试网q T j7jq.T~
内容并将光标定位在文件的第一行如果文件不存在则编辑界面中无任51Testing软件测试网8j(`El`
何内容如果需要在进入vi 编辑界面后将光标置于文件的第n 行则在vi51Testing软件测试网-\"xo6~g7D Z9b
命令后面加上+n 参数即可例如需要从example.txt 文件的第5 行开始显
'CY6U:q-F"e:@m4U$A$m0示则使用如下命令51Testing软件测试网qGZz%Q{7il
vi +5 example.txt51Testing软件测试网*\9k1^iE;rw
退出vi 时需要在末行模式中输入退出命令q 如果在文本输入模式下
l[LWSY`r0?)k0首先按ESC 键进入命令模式然后输入: 进入末行模式在末行模式
4WkE(D,`,sz)?+@?,k0下可使用如下退出命令51Testing软件测试网xn)Y1E:SB I
:q 直接退出如果在文本输入模式下修改了文档内容则不能退出51Testing软件测试网X$luF3B@9p
:wq 保存后退出
7r(X|$d*yYi.Pt0:x 同wq
?N!qN;FaFaL;_0:q! 不保存内容强制退出51Testing软件测试网mw!IH!X {b2_n"F-Q

u#~ @:F{]}7_)^c0vi 中显示行号:51Testing软件测试网3y4T j z-I&w$?l m0N

51Testing软件测试网!g$W!C.friL {4\_!S

在末行模式下输入如下命令51Testing软件测试网{w{@ `e)_K u
:set number                                                     可使vi 在编辑界面中显示行号
B PTXZn0此外在末行模式下可使用如下nu 命令number 的简写来显示光标
0ic)OEG"LZ0所在行的行号及该行的内容51Testing软件测试网]vHb3N*y[dN

b+fG-\zn a7X0光标移动操作:

(H8KX:U4~-lzk0

W0Tc5m;yW:hkpk0全屏幕文本编辑器中光标的移动操作无疑是最经常使用的操作了用户只51Testing软件测试网 \M R&yOpv9I
有熟练地使用移动光标的这些命令才能迅速准确地到达所期望的位置处进
1Pj5meb,KQ0行编辑51Testing软件测试网+S`md UA^
vi 中的光标移动既可以在命令模式下也可以在文本输入模式下但操作的方51Testing软件测试网f,cx pFp
法不尽相同51Testing软件测试网"{OX"p(w
在文本输入模式下可直接使用键盘上的四个方向键移动光标在命令模式
ia(H:?Lu0下有很多移动光标的方法不但可以使用四个方向键来移动光标还可以
c)c(R+K6[R0用h j k l 这四个键代替四个方向键来移动光标这样可以避免由于不同机51Testing软件测试网2y&^Y\IV;F*P)O ~
器上的不同键盘定义所带来的矛盾而且使用熟练后可以手不离开字母键盘51Testing软件测试网9O$O:QcIVe
位置就能完成所有操作从而提高工作效率51Testing软件测试网8qnqq/Dq4n t
以下命令均在命令行模式下完成光标移动51Testing软件测试网H6_1I8a i/I
h 光标左移如果在按h 命令前输入数字n 则光标左移n 个字符
vf+U,|TZv v6g:A0l 光标右移如果在按l 命令前输入数字n 则光标右移n 个字符
L n XG1F)X0j 光标上移如果在按j 命令前输入数字n 则光标上移n 个字符
,ac;P t3I0k 光标下移如果在按k 命令前输入数字n 则光标xia 移n 个字符
Wj$Hk [X1H00 零 光标移到行首
O#`!WJN5y q0$ 光标移到行尾51Testing软件测试网:Z:W.en;p8fi#E
H 光标移到屏幕上显示的第一行并不一定是文件头
o"VKa5i#I0L 光标移到屏幕上显示的最后一行并不一定是文件尾51Testing软件测试网_gh}.e)U
M 光标移到屏幕的中间一行

Pm"aN yCUZd0Z051Testing软件测试网,u.Qy"B6w*r3Fp

w或W 将光标右移至下一个单词的词首
z1Q0o]Fg7N6c0e 或E 如果光标起始位置处于单词内即非单词尾处则该命令将把光
J'Iya+ECq0标移到本单词词尾如果光标起始位置处于单词尾则该命令将把光标移动51Testing软件测试网SZ q#mb1h^0Ur
到下一个单词的词尾

"O(H"PR6tiq4f0

2t`"[;r~x0b 或B 如果光标处于所在单词内即非单词首则该命令将把光标移至51Testing软件测试网p4j\`R*sw-mG
本单词词首如果光标处于所在单词的词首则该命令将把光标移到上一个
"^9t*m:D$p!Gz0单词的词首51Testing软件测试网iP0N4dYQ^/X|6]
Ctrl+G 状态命令显示当前编辑文档的状态包括正在编辑的文件名是51Testing软件测试网e(m(OA d$K
否修改过当前行号文件的行数以及光标之前的行占整个文件的百分比51Testing软件测试网0hE)Td[VC8Ul*{;J
此外也可以通过以下末行模式下的命令完成光标在整个文件中的移动操作51Testing软件测试网w{h6w8|+p S
:n 光标移到文件的第n 行51Testing软件测试网'E0t0`!j4Hr$zDSqH
:$ 光标移到文件的最后一行51Testing软件测试网 k)wi `v.s_[)}

51Testing软件测试网 s2n9B{#yc Xv\

文本插入操作:

kcjZ?ID051Testing软件测试网rv_Tz

在命令模式下用户输入的任何字符都被vi 当作命令加以解释执行如果用51Testing软件测试网hE"s@`)C h%C
户要将输入的字符当作是文本内容时则首先应将vi 的工作模式从命令模式
|tg0L |0Xf0切换到文本输入模式切换的方式是使用下面的命令51Testing软件测试网e+O&J-E]i&{N
1. 插入Insert 命令51Testing软件测试网/^9vL/^.m
vi 提供了两个插入命令i 和I51Testing软件测试网 EU{oB m
1 . i 命令 插入文本从光标所在位置前开始并且插入过程中可以使用
j4YD&Y V0<Backspace>键删除错误的输入此时vi 处于插入状态屏幕最下行显示51Testing软件测试网"p bM X'dc ~
--INSERT-- 插入字样51Testing软件测试网/m zM Q3fEA%z
2 . I 命令 该命令是将光标移到当前行的行首然后在其前插入文本
M%iC`O_1F02. 附加append 命令51Testing软件测试网DTAb+B |*]6RwB
vi 提供了两个附加插入命令a 和A51Testing软件测试网$gW*K TP8u)r
1 . a 命令 该命令用于在光标当前所在位置之后追加新文本新输入的51Testing软件测试网+D*xk|&tYWAC
文本放在光标之后在光标后的原文本将相应地向后移动光标可在一行的
!J ltMT+~1C%M0任何位置51Testing软件测试网b~{^J XjX!K9J s
2 . A 命令 该命令与a 命令不同的是A 命令将把光标挪到所在行的行
O'oi8d!X[0尾从那里开始插入新文本当输入A 命令后光标自动移到该行的行尾
|JY*}#rd6Ro4A{5r0a 和A 命令是把文本插入到行尾的唯一方法51Testing软件测试网#U4Um-Y.t:bM E%|

#{[#ml9V6FX03. 打开open 命令51Testing软件测试网4VN Q!I3JK
不论是Insert 命令也好还是append 命令也好所插入的内容都是从当前行51Testing软件测试网j/c7Q%ffA
中的某个位置开始的若我们希望在某行之前或某行之后插入一些新行则
;m"Q5xZD`c1L'Zc*H7b0应使用open 命令51Testing软件测试网u9e-E*lU3J%@"]
vi 提供了两个打开命令o 和O
2x%]f4H_,DV#pO9B01 . o 命令 该命令将在光标所在行的下面新开一行并将光标置于该行51Testing软件测试网/c~c(] ~h
的行首等待输入文本要注意当使用<Backspace>删除字符时只能删除从51Testing软件测试网l#s[7m9~r1{7B:y eY9?
插入模式开始的位置以后的字符对于以前的字符不起作用
d(n6e/g,@%z)V02 . O 命令 和o 命令相反O 命令是在光标所在行的上面插入一行并
H$V Y }B2\I4M0将光标置于该行的行首等待输入文本

*w r7W1JH3D n*d051Testing软件测试网"ZEFd.D N(p2hC%u r

文本修改操作:51Testing软件测试网,_I3wZ)s4q0E1Ch-t/o

~]7WX SX0在命令模式下可以使用vi 提供的各种有关命令对文本进行修改包括对文本
/^-D SF0y7h&u7v{0内容的删除复制取代和替换等
7XT[/j yV01. 文本删除/移动
3E V0PSC8Y#GqO:v0在编辑文本时经常需要删除一些不需要的文本我们可以用<Backspace>
:H&Ndi"UC N%k0键将输错或不需要的文本删除但此时有一个限制就是当删到行头之后再51Testing软件测试网 fE%f'D4K5L+s8wn)b
想删上面那行的内容是不可能的51Testing软件测试网1OX#Ed0AG \0^|
在命令模式下vi 提供了许多删除命令这些命令大多是以d 开头的常用的
|,c9]9J/M'@s051Testing软件测试网{DD3?i
1 . 删除单个字符51Testing软件测试网 W u IshX
x 删除光标处的字符若在x 之前加上一个数字n 则删除从光标所在位置
s i_5DWLo#}6m0开始向右的n 个字符51Testing软件测试网6GH?8}w9BK
X 删除光标前面的那个字符若在X之前加上一个数字n 则删除从光标51Testing软件测试网N E(E$] bf,n%p(f*g
前面那个字符开始向左的n 个字符
$fIiI7{/Jj#o0显然这两个命令是删除少量字符的快捷方法
lN E'fK*FqW/p f02 . 删除多个字符
PN(x-QL0dd 删除光标所在的整行在dd 前可加上一个数字n 表示删除当前行及51Testing软件测试网lG;T,X^
其后n-1 行的内容51Testing软件测试网1n#O7CQi qd5]
D 或d$ 两命令功能一样都是删除从光标所在处开始到行尾的内容

w2K~9EmA%Gu,C051Testing软件测试网&y%V6h ZRu bk)x

d0 删除从光标前一个字符开始到行首的内容51Testing软件测试网NYL L1V` |
dw 删除一个单词若光标处在某个词的中间则从光标所在位置开始删至51Testing软件测试网*h;I8Sur
词尾同dd 命令一样可在dw之前加一个数字n 表示删除n 个指定的单
(["`#B*Wa4d*}&K051Testing软件测试网~z#L+M7Z6U
如果用户不小心进行了误删除操作也不要紧vi 提供了恢复误操作的命令51Testing软件测试网'C`0q.f.lX
并且可以将恢复的内容移动放在文本的任何地方恢复命令用np 其51Testing软件测试网2tG3J7~8H8aZ {IeJ
中n 为需要恢复的次数例如使用dd 命令删除了一行内容然后使用2p51Testing软件测试网!\/aZ@Y*me
命令则被删除的内容会被重新插入两遍51Testing软件测试网"q&I,q-X s H9p
通过dd 命令及p 命令的结合使用可以很方便的实现文本行的移动操作
)mEh }%n$F3Y9s8J5n2F4T'u02. 文本复制命令
^J[4w lO0yy 复制光标所在的整行在yy 前可加上一个数字n 表示复制当前行及其
p,r8cyY.r2U)c C&G.}0后n-1 行的内容51Testing软件测试网|L.|-`@7fM
文本行复制后通过使用上面介绍的p 命令可以将文本行粘贴到任何地51Testing软件测试网T:k#\.ag6Ix+A.L(F

8`;^'~r4F#U,z0dd yy 及p 命令在vi 中的作用类似于Windows 中图形编辑程序的剪切
t4T'kx3\:^9RsU)j"E3Jz0复制及粘贴命令51Testing软件测试网Z j%usynp"P|

51Testing软件测试网kt+J4}u4A:BFr4o

取消上一命令Undo51Testing软件测试网 O PXq-JGf
取消上一命令Undo 也称复原命令是非常有用的命令它可以取消前51Testing软件测试网JI_%^\ dE
一次的误操作或不合适的操作对文件造成的影响使之回复到这种误操作或51Testing软件测试网X9I5~*J,ps:i!R
不合适操作被执行之前的状态51Testing软件测试网6c5F#a_:h5[O$G
取消上一命令有两种形式在命令模式下键入字符u 和U 它们的功能都是51Testing软件测试网i'd'm$o"l@5Sw
取消刚才输入的命令恢复到原来的情况小写u 和大写U 在具体细节上有
0GV dX C$E5@J0所不同二者的区别在于大写U命令的功能是恢复到误操作命令前的情况51Testing软件测试网ZPM B2~+iT:W'[
即如果插入命令后使用U 命令就删除刚刚插入的内容如果删除命令后使
YWN+g0n.M)Yt up0用U 命令就相当于在光标处又插入刚刚删除的内容这里把所有修改文本
2y!r)v;q/{o^V,lB0的命令都视为插入命令也就是说U 命令只能取消前一步操作如果用U51Testing软件测试网#F)IE'u(V]`x
命令撤消了前一步操作当再按U 键时并不是撤消再前一步的操作而是51Testing软件测试网?d:L ^#F"q"\\.e8IA
撤消了刚才U命令执行的操作也就是又恢复到第一次使用U 命令之前的状51Testing软件测试网&IYaL(Zw
态结果是什么都没做而小写u 命令的功能是把当前行恢复成被编辑前的
,NZ3X*J__L$W.G0状态而不管此行被编辑了多少次

%Dn}7yuqp#E0

h&hc1xD-Pl T0 51Testing软件测试网 _r v]7q9d1b,A*\


TAG:

 

评分:0

我来说两句

Open Toolbar