配置文件和shell脚本文件等都是文本文件,对它们都需要使用文本编辑器进行编
辑处理。在Linux系统中有许多种文本编辑器,其中既有字符界面的如:vi,emacs
等,也有图形界面的如:“附件”菜单项下的“文本编辑器(gedit)”等,用户可以
根据自己的喜好选择使用,但是对于学习使用Linux系统的用户一般都会学校vi编辑器
的用法。
编辑器vi可以编辑各种无格式的文本文件,尤其便于编辑源程序。它可以实现输
入、 查找、替换、删除和块操作等许多基本的文本操作功能,而且用户可以根据自己
的需要对其进行定制,以符合自己的习惯。在vim中,还有一些增强的功能,如撤销多
行输入、参数高亮显示、命令行编辑和支持图形方式vi的多窗口、多缓冲区等。
由于vi是交互式的文本编辑器,它没有菜单,只有命令,而且命令非常多,所有
很多初学者使用不习惯,但是在掌握了它的使用诀窍后很快会喜爱上它的。在vi中有3
种工作模式:文本编辑模式、命令模式、行编辑模式。其中,文本编辑模式要工作在
插入状态下,而行编辑模式实际上也是命令模式的一种,只不过它是需要在命令行模
式下先输入“:”后在输入命令而已。用户可以根据需要,通过一些命令在这三中模
式之间自由地切换,而大多数命令就是该操作的英文单词的第一个字母。
另外,vi只是一个文本编辑器,它不是排版软件,所以它不能像word那样可以对
文档中的字体、格式和段落等属性进行编辑,这是由它的用途而决定的。在vi中对文
本所做的修改将被放到内存缓冲区中,只要用户不输入存盘命令,那么随时都可以放
弃这些修改。一般情况下,文本在存盘时vi不会自动保存备份文件,但是在打开文件
时Linux系统会在磁盘相关目录下自动创建扩展名为.swp的文件,这个文件也称为交换
文件。如果由于某些原因,如编辑器崩溃、系统断电或非法关机等操作时,该文件就
作为备份文件使用,用户在下次启动系统时会在自己的主目录下收到相关邮件,由用
户决定是否通过命令来恢复文件。
基本命令
在vi编辑器的命令模式下,命令的组成格式是:nnc。其中,字符c是命令,nn是
整数值,它表示该命令将重复执行nn次,如果不给出重复次数的nn值,则命令将只执
行一次。例如,在命令模式下按j键表示光标向下移动1行,而在命令模式下输入10j则
表示光标将向下移动10行。显然,这样比单纯移动键盘光标键效率要高。
1、定位光标
由于文件内容的插入、删除和替换等操作都是针对光标所在的字符或行而言的,
因此应该熟悉光标移动的命令和方法,并充分利用命令重复执行的次数。
w 将光标移动到下1个单词的第1个字符。
W 将光标移动到后面第2个单词的第1个字符
e或E 将光标移动到下1个单词的最后1个字符
b或B 将光标移动到前1个单词的第1个字符
/string 向后移动光标,并使之停留在字符串string的第一个字符处
?string 向前移动光标,并使之停留在字符串string的第一个字符处
$ 将光标移动到本行的最后1个字符上
Ctrl+b 将光标移动到本行的第1个字符上
其中,w或W命令的差别只是在于非空格分割字符上,w命令视非空格分隔字符为单
词,而W命令则忽略它。当使用/string或?string命令时,除了光标移动到指定的位
置外,还使文件中所有符合字符串string的地方高亮显。
2、插入或添加
无论是插入还是添加,都是向所编辑的文件中加入新的内容,但由于插入可以在
光标前或当前行前,添加可以在光标后或当前行后,所以vi提供了多种插入和添加命
令:
i 在光标前插入字符
I 在当前行的行头插入字符
a 在光标后添加字符
A 在当前行的行尾添加字符
o 在当前行后添加新行
O 在当前行前添加新行
由于这6个命令都会使vi编辑器从命令模式切换到文本编辑模式下的插入状态,所
以当插入或添加完成后,必须按ESC键返回到命令模式下。
3、删除
删除文本文件中的内容,可以按照字符、单词和行为单位进行删除,因此,也有
多个删除命令。删除命令执行后将使vi继续处于命令模式下。
x 删除光标所在位置的字符,且光标移动到本行的下1个字符
X 删除光标所在位置的前一个字符,且光标停留在原来的字符上
D 删除光标所在位置到行尾的所有字符,且光标停留在本行的行尾
按2次d 删除光标所在的行,且光标移动到下1行
先d后w 删除光标所在位置到下一个单词的第一个字符间的所有字符,且
光标移动到下一个单词的第一个字符。
4、查找
在文件中查找字符串时,可以向前查找也可以向后查找,因此有两种命令,其格
式为:
/expression
?expression
其中,斜杠(/)表示从当前位置开始向后查找,问号(?)表示从当前位置开始
向前查找,expression是正则表达式。如果正则表达式是字符串且包含:. ^ $ / ~
等特殊字符(元字符),则查找包含这些特殊字符的字符串时,一定要在它们每一个
前面加上反斜杠(\)字符表示转义。
参考示例:
For the users,permission to use at is detemined by the file ~/yt-3.1.8 contains the exact definition of the time specification.
查找字符串~/yt-3.1.8,在命令行模式下输入:/\~\/yt-3\.1\.8,注意:要在
每1个标签字符前都要使用转移字符。
5、修改
在vi编辑器中修改文本文件内容的命令主要是删除指定的字符或行并输入新的字符,替换指定的字符或行。
s 删除光标所在位置的字符,且光标移动到下1个字符上。然后进入
文本编辑模式下的插入状态,等待用户输入
S 删除光标所在行,且光标仍在本行的行首,然后进入文本编辑模
式下的插入状态,等待用户输入
按2次c 与S命令功能相同
C或c$ 删除光标所在位置到行尾的所有字符,且光标停留在本行的行
尾,然后进入文本编辑模式下的插入状态,等待用户输入
r 用r命令后输入字符替换当前光标位置处的字符。1次只能替换1个
字符,如果是相同连续的字符可以用nnr命令的形式。
R 使用该命令会使用vi进入文本编辑模式的替换状态,在屏幕的左
下方显示“REPLACE(替换)"状态信息。在这种状态下,从当前光标所在的位置开始,
新输入的字符将逐个替换原有的字符,直到用户按下Esc键返回命令模式为止。
注意:s、S、C、c$命令是修改命令,它们与x、X、D、d删除命令不同的地方在于删除
字符或行后vi的工作模式转变,等待用户插入字符修改。R、r是替换命令,此时vi是
文本编辑模式下的替换状态而非插入状态,输入的新字符将覆盖旧字符,所以在输入
时一定要注意是否覆盖了不该覆盖的字符。
6、剪切与粘贴
在文本文件编辑中,经常需要将某处的1个句子或若干行文本移动或复制到本文件
的其他地方,这就需要编辑器有剪切和粘贴的功能。
vi中的缓冲区分为通用缓冲区和专用缓存区,在一般情况下,最近1次的抽取、删
除、插入和修改的内容都将存放在通用缓冲区中。利用这些缓冲区可以非常方便地实
现文件内容的剪切和粘贴。
按2次y 将光标所在行的内容复制到通用缓冲区,该命令也称为抽取。
p 取出通用缓冲区中的内容放在光标所在位置的后面,即粘贴。
复制多行可以使用nnyy命令。另外,D、dd、O等删除、插入命令也是以行为单位
将处理的内容放入通用缓冲区的。
7、撤销操作
使用编辑器的用户都会希望有撤销操作的命令。在vi编辑器中使用u键可以恢复。
8、几个特殊的命令
J命令
合并第n行与第n+1行,使用时,将光标移动到第n行上按J键即可。
.命令
重复执行前一条操作命令。
~命令
改变光标所在位置字母的大小写,即大写变小写,小写变大写。