文本编辑器的使用
【实验目的】
1.掌握Linux文本编辑器vi的使用方法
2.分清vi的三种工作模式
【实验器材】
装有Linux系统的计算机
【实验任务】
学习文本编辑器vi的使用方法,分清vi的三种工作模式:命令模式、文本输入模式和末行模式。
【实验指导】
1. 将PC开机,右键选择“进入操作界面”,然后进行登录。点屏幕下方的“终端命令行”,打开一个虚拟文本界面终端窗口。如下图1.4-1所示:

图1.4-1
2. 进入vi,键入命令“vi example.c”,屏幕显示如图1.4-2所示。

图1.4-2
3.分别进入vi的三种工作模式:命令模式、文本输入模式和末行模式。
4.退出vi
【相关知识】
vi 是文本界面下的一个编辑纯文本文件的编辑器,通常用它来编辑一些配置文件。目前vi还不能编辑中文。本试验要求使用vi编辑器编辑一个文本文件。
1.进入vi
格式: vi <文件名>
“文件名”为被编辑的文件,它可以使一个要新建的文件,也可以是一个已经存在的旧文件。
如果只键人“vi”而不带文件名,也可以进入vi编辑器,然后在光标处键入文件内容,退出vi时,只需在退出命令后输入文件名即可。
进入vi之后,首先进入的就是命令模式,也就是说等待命令输入而不是文本输入。这时输入的字母都将作为命令来解释。光标停在屏幕第一行首位上,其余各行行首都有一个“~”符号,表示该行为空行。最后一行称为状态行,显示当前正在编辑的文件名及其状态。例如上面例子中的状态行显示“NewFile”, 表示example.c是一个新建的文件。如果example.c文件已经存在,那么输入上述命令后,则屏幕上将显示该文件的内容,并且光标停在第一行的首位,在状态行显示出该文件的文件名、行数和字符数。
2.vi的工作模式
vi的编辑环境没有菜单,只有键盘命令,且命令繁多。vi有三种基本工作模式:命令模式、文本输入模式和末行模式。
(1)命令模式
在命令模式下,从键盘上输入的任何字符都被当作编辑命令来解释。若输入的字符是合法的vi命令,则vi在接受用户命令之后完成相应的操作,但所输人的命令并不在屏幕上显示出来;若输入的字符不是vi的合法命令,vi会响铃报警。在命令模式,屏幕底行不显示信息。
在Shell环境中输入启动命令“vi”,进入vi编辑器后即处于命令模式。
命令模式下的编辑命令如下:
①命令模式切换到文本输入模式。启动vi后即进入vi的命令模式。要在命令模式与文本模式之间进行切换,可按“Esc”键或“i”键等。如下是从命令模式切换到文本模式的命令:
i 光标位置不变,可在光标左侧插入正文。
a 光标位置向后退一格,可在光标左侧插入正文。
o 在光标所在行的下一行增添新行。
O 在光标所在行的上一行增添新行。
I 光标跳到当前行的开头。
A 光标跳到当前行的末尾。
②光标移动。要对正文内容进行修改,首先必须把光标移到指定位置。在光标最简单的方式是按键盘的上、下、左、右箭头键。除了这种方法外,用户可以在命令模式下利用Vi提供的众多字符组合键在正文中移动光标,迅速至指定的行或列,实现定位。例如:
k、j、h、l 分别等同于上、下、左、右箭头键。
Ctrl+b 在文件中向上移动一页(相当于PageUp键)。
Ctrl+f 在文件中向下移动一页(相当于PageDown键)。
nH 将光标移到屏幕的第n行。
nL 将光标移到屏幕的倒数第n行。
③删除文本。在命令模式下,将光标定位于文件内指定位置后,可从当前光标位置删除一个或多个字符。例如:
nx 删除光标所指向的后n个字符。
D 删除光标右侧的所有字符(包括光标所指的字符)。
db 删除光标左侧的全部字符。
ndd 删除当前行和当前行以后的n行内容。
④粘贴和复制。从正文中删除的内容(字符、字或行)并没有真正丢失,而是被剪切并复制到了一个内存缓冲区中。用户可将其粘贴到正文中的指定位置。完成这一操作的命令是:
p 小写字母p,将缓冲区的内容粘贴到当前字符的右侧。
P 大写字母P,将缓冲区的内容粘贴到当前字符的左侧。
如果缓冲区的内容是字符或字,则直接粘贴到光标的前面或后面;如果缓冲区的内容为整行正文,则粘贴到当前光标所在行的上一行(大写P)或下一行(小写p)。注意两个命令中字母的大小写。
vi编辑器经常以一对大、小写字母(如p和P)来提供一对相似的功能。通常,小写命令在光标的后面进行操作,大写命令在光标的前面进行操作。
有时需要复制一段正文到新位置,同时保留原有位置的内容。在这种情况下,首先应当把指定内容复制(而不是剪切)到内存缓冲区。完成这一操作的命令是:
yy:复制当前行到内存缓冲区。
nyy:复制n行内容到内存缓冲区。
⑤搜索字符串。vi提供了强大的字符串搜索功能。要查找文件中指定字或短语,可以用vi直接进行搜索,而不必以手工方式进行。搜索方法是:键人字符“/”,后面跟要搜索的字符串,然后按回车键。键人“n”命令可以继续执行搜索,找出这一字符串下次出现的位置。用字符“?”取代“/”可以实现反向搜索(朝文件开头方向)。搜索命令如下:
/strl 正向搜索字符串“strl”。
n 继续搜索,找出“strl”字符串下次出现的位置。
? str2 反向搜索字符串“str2”。
无论搜索方向如何,当到达文件末尾或开头时,搜索工作会循环到文件的另一端并继续执行。
⑥撤销和重复。在编辑文档的过程中,为消除某个错误操作,可以用撤销命令。另外,如果用户希望在新的光标位置重复前面执行过的编辑命令,可以用重复命令。
u 撤销前一条命令的执行结果。
. 重复最后一条命令。
(2)文本输入模式
在命令模式下键人如下命令都可以进入文本输入模式:插入命令“i”、附加命令“a”、打开命令“o”、修改命令“c”、取代命令“r”或替换命令“s”。
在文本模式下,用户输入的任何字符都被vi当成文件内容,并将其显示在屏幕上。在文本输入过程中,若想回到命令模式下,按Esc键即可。
(3)末行模式
在命令模式下,用户键入“:”就进入了末行模式下,此时vi会在最后一行显示一个“:’’作为提示符,等待用户输人命令。多数文件管理命令都是在末行模式下执行的。
在末行模式下可按Del键,或用退格键“←”删除输入的命令,就回到命令模式。
末行模式下的常用命令如下:
①移动光标。正在编辑中的每一行正文都有自己的行号,用下列命令可以移动光标到指定行:
:n将光标移到第n行。
②文本读取或写入。在末行模式下,用末行命令可以从文件中读取正文,或将正文写入文件。末行模式命令有:
:nw file 将第n行写入fi1e文件。
:n,mw file 将第n行至第m行写入file文件。
:w 将编辑的内容写入原始文件,用来保存编辑的中间结果。
:wq 将编辑的内容写入原始文件并退出编辑程序。
:w file 将编辑的内容写入file文件,保持原有文件的内容不变。
:e file 编辑新文件file代替原有内容。
:f file 将当前文件重命名为file。
:f 打印当前文件的状态,如文件的行数、光标所在的行号等。
3. 退出vi
可以在命令模式下使用以下几种方法之一退出vi。
①输入“ZZ”或“:wq”,保存文件并退出vi编辑器。其中,冒号“:”表示进入末行模式;w表示存盘;q表示退出。若进入vi时没有指定文件名,则在中途存盘或退出存盘时需要给定一个文件名,键入“:w {文件名)”或“:wq<文件名>”即可。
②输入“:q”,退出vi。若修改过的内容已经保存过,则退出vi;否则,vi将显示警告信息,不退出vi。
③输入“:x”。如已经对所编辑的内容修改过,则将缓冲区中的内容写到指 定的文件后再退出vi。
④输入“:q!”,退出vi编辑器,不保存所修改的内容,也不出现任何提示信息。叹号“!”表示强行退出。