文本编辑器的使用

【实验目的】

  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编辑器,不保存所修改的内容,也不出现任何提示信息。叹号“!”表示强行退出。

【去实验】