vi操作指南
立志在linux有所建树Q就必须要熟悉linux文字~辑利器vi
基本?vi 共分ZU模式,分别是『一般模式』、『编辑模式』与『指令列命o模式』三U!
· 一般模式:?vi 处理一个档案的时后Q一q入该档案就是一般模式了。在q个模式中,你可以用『上下左叟뀏按键来Ud光标Q您可以使用『删除字W』或『删除整行』来处理档案内容Q也可以使用『复制、脓上』来处理您的文g资料?
· ~辑模式Q在一般模式中可以处理删除、复制、脓上等{的动作Q但是却无法~辑的!要等到您按下『i, I, o, O, a, A, r, R』等字母之后才会q入~辑模式。注意了Q通常?Linux 中,按下上述的字母时Q在画面的左下方会出现?Insert ?Replace 』的字样Q才可以输入M字来输入到您的档案中Q!而如果要回到一般模式时Q则必须要按下『Esc』这个按键即可退出编辑模式?
· 指o列命令模式:在一般模式当中,输入?: ?/ 』就可以光标移动到最底下那一行,在这个模式当中,可以提供您『搜寻资料』的动作Q而读取、存盘、大量取代字W、离开 vi 、显C?{等的动作则是在此模式中达成的!
一般模式: Ud光标
h ?向左方向?光标向左Ud一个字W?
j ?向下方向?光标向下Ud一个字W?
k ?向上方向?光标向上Ud一个字W?
l ?向右方向?光标向右Ud一个字W?
[Ctrl] + [f] 屏幕『向前』移动一(常用Q?
[Ctrl] + [b] 屏幕『向后』移动一(常用Q?
[Ctrl] + [d] 屏幕『向前』移动半?
[Ctrl] + [u] 屏幕『向后』移动半?
+ 光标Ud到非I格W的下一?
- 光标
/word 向光标之后寻找一个字W串名称?word 的字W串。(常用Q?
?word 向光标之前寻找一个字W串名称?word 的字W串?
:n1,n2s/word1/word2/g 在第 n1 ?n2 行之间寻?word1 q个字符Ԍq将该字W串取代?word2 Q(常用Q?
:1,$s/word1/word2/g 从第一行到最后一行寻?word1 字符Ԍq将该字串取代ؓ word2 Q(常用Q?
:1,$s/word1/word2/gc 从第一行到最后一行寻?word1 字符Ԍq将该字串取代ؓ word2 Q且在取代前昄提示字符l用者确认(conformQ是否需要取代!Q常用)
一般模式: 删除、复制与贴上
x, X x 为向后删除一个字W, X 为向前删除一个字W(常用Q?
nx 向后删除 n 个字W?
dd 删除光标所在的那一整列Q常用)
ndd 删除光标所在的向下 n 列,例如 20dd 则是删除 20 列(常用Q?
d1G 删除光标所在到W一行的所有资?
dG 删除光标所在到最后一行的所有资?
yy 复制光标所在的那一行(常用Q?
nyy 复制光标所在的向下 n 列,例如 20yy 则是复制 20 列(常用Q?
y1G 复制光标所在列到第一列的所有资?
yG 复制光标所在列到最后一列的所有资?
p, P p 为复制的数据在光标下一行脓上,P 则ؓ贴在光标上一行!Q常用)
J 光标所在列与下一列的资料l合成同一?
c 重复删除多个资料Q例如向下删?10 行,[ 10cj ]
u 复原前一个动作。(常用Q?
q入~辑模式
i, I 插入Q在目前的光标所在处插入输入之文字,已存在的文字会向后退Q(常用Q?
a, A 增加Q由目前光标所在的下一个字开始输入,已存在的文字会向?/p>
退Q(常用Q?
o, O 插入新的一行:从光标所在的下一行枝行首开始输入文字;Q常用) r, R 取代Qr 会取代光标所在的那一个字W;R会一直取代光标所在的文字Q直到按?ESC 为止Q(常用Q?
Esc 退出编辑模式,回到一般模式中Q常用)
指o列命令模?nbsp;
:w 编辑的资料写入盘档案中(常用Q?
:w! 若档案属性ؓ『只诅R时Q强制写入该档案
:q d vi Q常用)
:q! 若曾修改q档案,又不惛_存,使用 ! 为强制离开不储存档案?
:wq 储存后离开Q若?:wq! 则ؓ强制储存后离开Q常用)
:e! 档案还原到最原始的状态!
ZZ 若档案没有更动,则不储存dQ若档案已经l过更动Q则储存后离开Q?
:w [filename] 编辑的资料储存成另一个档案(cM另存新档Q?
:r [filename] 在编辑的资料中,d另一个档案的资料。亦卛_ 『filename』这个档案内容加到光标所在行后面
:set nu 昄行号Q设定之后,会在每一行的前缀昄该行的行?
:set nonu ?set nu 相反Qؓ取消行号Q?
n1,n2 w [filename] ?n1 ?n2 的内容储存成 filename q个档案?
:! command 暂时d vi 到指令列模式下执?command 的显C结果!?br>如[ :! ls /home ]
OKQ会q些指o已l很厉害了,因ؓ常用到的指o也只有不C半!?/p>
?vi 的指令除了上?VBird 注明的常用的几个外,其它是不用背的,
你可以做一张简单的指o表在你的屏幕墙上Q一有疑问可以马上的查询?/p>
一个案例练?
来来来!试一下您是否已经熟悉 vi q个指o呢?请依照底下的需求进
行您的指令动? h意,该档案ؓ Mandrake 9.0 所附上的档案内容,
如果是其它的 distribution Q可能结果会不太一P )Q然后看一下结
果在屏幕前面昄什么?
请在 /root q个目录下徏立一个名?vitest 的目录;
q入 vitest q个目录当中Q?
?/etc/man.config 拯到本目录底下Q?
使用 vi 开启本目录下的 man.config q个档案Q?
?vi 中设定一下行P
Ud到第62 行,向右Ud 40 个字W,请问您看到的双引号内是什么目
录?
Ud到第一行,q且向下搜寻一下?teTeX 』这个字W串Q请问他在第几行Q?
接着下来Q我要将 50 ?100 行之间的 man 改ؓ MAN Qƈ且一个一?br>挑选是否需要修改,如何下达指oQ?
修改完之后,H然反悔了,要全部复原,有哪些方法?
我要复制 51 ?60 行这十行的内容,q且贴到最后一行之后;
删除 11 ?30 行之间的 20 行;
这个档案另存成一?man.test.config 的檔名;
dW?29 行,q且删除 15 个字W;
请问目前的档案有多少行与多少字符Q?
储存后离开吧!
整个的步骤可以如下所C:
mkdir /root/vitest
cd /root/vitest
cp /etc/man.config .
vi man.config
: set nu
先按?62G Q再按下 40 + 向右键,会看到?dir/bin/foo?
先按?1G Q然后按?/teTeX 搜寻Q会看到他在W?51 行!
:50,100s/man/MAN/gc
(1)单的Ҏ可以一直按 u 回复到原始状态,(2)使用不储存离开 :q!
之后Q再重新d一ơ该档案
51G 然后?10yy 之后按下 G 到最后一行,再给?p 贴上十行Q?
11G 之后Q再l他 20dd 卛_删除 20 行了Q?
:w man.test.config
29G 之后Q再l他 15x 卛_删除 15 个字W;
135行,?3903 个字W?:wq!
如果您的l果都可以查的到Q那?vi 的用上面应该没有太大的问题?/p>