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] + 萤幕向『后』移动一页;

[Ctrl] + [f] 萤幕向『前』移动一页;

[Ctrl] + 萤幕向『后』移动半页;

[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 的指令除了常用的几个外,其他是不用背的,你可以做一张简单的指令表在你的萤幕墙上,一有疑问可以马上的查询幽!