3.5 vi文本编辑器
在Linux命令行状态下,常常需要编辑配置文件。同时,进行Shell编程、程序设计等也需要使用编辑器。Linux下包含很多不同的编辑器,vi是其中功能最为强大的全屏幕文本编辑器。
3.5.1 vi简介
vi是所有UNIX及Linux下标准的编辑器,对于UNIX及Linux的任何版本而言,vi是相同的。vim(vi improved)是vi的升级版,功能更强大,并且对vi兼容。CentOS 7.6默认把vi指向vim,在执行vi时,实际上等同于执行vim。
另外,vim具有高度的可配置性,并且带有显著的功能,如语法突出显示、鼠标支持、图形版本、可视模式,以及大量的扩展等。
3.5.2 vi的工作模式和切换
vi有3种基本工作模式,分别是命令模式、文本输入模式和末行模式。
1.命令模式
该模式是进入vi后的默认模式。任何时候,不管用户处于何种模式,按Esc键即可进入命令模式。在该模式下,用户可以输入vi命令,此时从键盘上输入的任何字符都被当作编辑命令来解释。若输入的字符是合法的vi命令,则vi在接受用户命令之后会完成相应的动作。需要注意的是,所输入的命令并不会显示在屏幕上。若输入的字符不是vi命令,则vi会报错。
2.文本输入模式
在命令模式下输入命令i、附加命令a、打开命令o、修改命令c、取代命令r或替换命令s,都可以进入文本输入模式。在该模式下,用户输入的任何字符都会被vi当作文件内容显示在屏幕上。在文本输入过程中,若想回到命令模式下,则按Esc键即可。
3.末行模式
末行模式,也称为ex转义模式。在命令模式下,用户输入“:”即可进入末行模式,此时vi会在显示窗口的最后一行(通常也是屏幕的最后一行)显示一个“:”作为末行模式的说明符,并等待用户输入命令,在用户输入命令后按Enter键,会在执行完成后自动回到命令模式。大多数文件管理命令都是在此模式下执行的(如把编辑缓冲区的内容写到文件中等)。在末行命令执行完后,vi会自动回到命令模式。如果要从命令模式转换到文本输入模式,则可以键入“a”或者“i”。如果需要从文本输入模式返回,则按Esc键即可。在命令模式下,输入“:”即可切换到末行模式,然后输入命令。
3.5.3 启动vi
启动vi非常简单,在提示符下输入“vi[文件名]”即可启动vi。如果不指定文件名,则新建一个未命名的文本文件,在退出vi时必须指定文件名;如果指定文件名,则新建(文件不存在时)或打开同名文件。
例如:
3.5.4 vi常用命令
vi的各类命令是编辑文件的利器,不仅数量很多,而且功能强大。vi常用命令如表3-4所示。
表3-4 vi常用命令
续表
vi在编辑某个文件时,会另外生成一个临时文件,这个文件的名称通常以“.”开头,并以“.swp”结尾。vi在正常退出时,该文件会被删除,若意外退出,而没有保存文件的最新修改内容,则可以使用恢复命令“:recover”来恢复文件。