vi 简易说明
要治理好 Linux 系统﹐少不了要对设定档案进行编辑,假如您用惯了 Microsoft Word 或 Corel Wordperfect 的话,除了 Xwindows 里面的编辑程式(如 xemacs )用起来尚可应付外,于 Linux 的文字模式下,会觉得档案编辑程式都没有 Windows 程式那么方便。
虽然 Linux 下面也有好多种文书编辑器,例如﹕ed、vi、pico、joe、emacs等。
以下我们以最常见到的 vi 这套文书软体来介绍 Linux 底下的文书编辑动作。
基本上 vi 共分为两种模式,一种是『编辑模式』,一种被称为『命令模式』,其中,在命令模式中尚包含『命令列模式』的情况。『编辑』与『命令』这两种模式的切换动作是以『Esc』来达成的。通常,档案一开启或者新建档时,会成为命令模式,假如要在档案中输入字元,就必需以小写的 i 来进入编辑模式,进入编辑模式后你输入的咚咚才会显示出来!那由『编辑模式』要变成『命令模式』时,就直接按『Esc』即可。而若要进入『命令列模式』时,就必须要在命令模式中输入『:』(冒号),那游标就会跑到萤幕的最下面一行来等待你输入啦!
简易执行范例
新建档案:
好了,我们在 Linux 底下建立一个名为 test.dat 的档案,可以这样开启一个新档案:
[root@tsai root]# vi test.dat
进入编辑模式:
一进入 vi 的画面你会看到一片空白(乌漆嘛黑的),而且即会进入命令模式,你可以输入 i 来进入编辑模式,这时候你会看到萤幕的最下方会出现『--INSERT--』字样:
开始编辑:
这时候你就可以随便按几个字来输入一下,在这里要提醒一下,『Tab』键与空白键是不一样的咚咚喔!
回到命令模式:
在编辑模式的时候,不论你按什么键(除了 Esc 之外)都会被视为字元而显示在萤幕上,这时按下 Esc 键后会回到命令模式,假如你会到了命令模式,但是要消除你目前游标所在行的内容,你可以输入『dd』,就可以杀掉一整列了!
在命令列模式输入储存指令:
OK,我们要存档了,存档并离开的指令很简单,输入『:wq』即可存档离开!这时你在提示字元后面输入『 ls -l 』即可看到我们刚刚建立的 test.dat 档案啦!
命令列内容说明
如前所述,所谓的命令列或命令模式,就是在最下面一行没有显示『--INSERT--』或者『--REPLACE--』字样的时候。通常在命令列中的指令有下面几种:(注重,当按下『:』 时,游标会自动移动到萤幕的最下面一行!)
进入编辑模式:
i插入:在目前的游标所在处插入输入之文字,已存在的文字会向后退;
a增加:由目前游标所在的下一个字开始输入,已存在的文字会向后退:
o插入新的一行:从游标所在的下一行枝行首开始输入文字;
r取代:会取代游标所在的那一个字元;
R全部取代:会一直取代游标所在的文字,直到按下 ESC 为止;
游标移动指令:
k 或向上键向上移一个字元;
j 或向下键向下移一个字元;
h 或向左键向左移一个字元;
l 或向右键向右移一个字元;
H游标移动到萤幕顶端;
M游标移动到萤幕正中心;
L游标移动到萤幕最夏方;
+游标移动至非空白字元的下一列;
-游标移动至非空白字元的前一列;
[Ctrl] + [b]萤幕向『后』移动一页;
[Ctrl] + [f]萤幕向『前』移动一页;
[Ctrl] + [u]萤幕向『后』移动半页;
[Ctrl] + [d]萤幕向『前』移动半页;
[n]先按数字后再按空白键:游标向后面移动 n 个字元;
0数字键『0』:移动到这一列的第一个字元;
$移动到这一行的行尾;
G移动到最后一行;
nG移动到第 n 行(常与 :set nu 合用);
J将目前游标所在行与下一行连结;
搜寻指令:
/word向游标之后寻找一个名为 『word』 的字串;
?word向游标之前寻找一个名为 『word』 的字串;
:g/word1/s//word2/g寻找 『word1』 这个字串,并且以 『word2』 这个字串取代之;
:n1,n2 s/word1/word2/g将第 n1 行到 n2 行的字串 『word1』 都改成 『word2』;
:1,$ s/ls/ll/g将所有档案内容的 『ls』 这个字串改成 『ll』 这个字串;
删除与复制:
yy 或 Y复制游标所在行的内容;
nyy 或 nY『n』 为数字:复制游标所在行向下 n 行之内容;
p将 yy 复制的内容贴到游标所在行的下面;
x删除一个字元;
nx『n』 为数字:删除 n 个字元;
dd删除游标所在那一行;
ndd『n』 为数字:向下删除 n 行;
u取消前一个动作;
[Ctrl] + [L]清除萤幕并重绘萤幕
命令模式:
:wq将所做修改储存后离开 vi;
:w仅储存档案;
:w [filename]将目前的内容储存到 『filename』 这个档案中(类似另存新档);
:r [filename]将 『filename』 这个档案内容加到游标所在行后面;
:q离开 vi;
:q!
强制离开 vi ;
其他指令:
:set nu设定行号,让你可以轻易的找出错误;
:set nonu取消设定行号;
:n1, n2 w [filename]将 n1 到 n2 的内容存成 『filename』 这个档案;
OK!会这些指令就已经很厉害了,因为常用到的指令也只有不到一半!通常 vi 的指令除了常用的几个外,其他是不用背的,你可以做一张简单的指令表在你的萤幕墙上,一有疑问可以马上的查询幽!