9.1 vi与vim
9.1.1 为何要学vim
所有的 Unix Like 系统都会内置 vi 文书编辑器,其他的文书编辑器则不一定会存在;
很多个别软件的编辑接口都会主动调用 vi (例如未来会谈到的 crontab, visudo, edquota等指令);
vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计;
因为程序简单,编辑速度相当快速。
什么是vim?
你可以将 vim 视作 vi 的进阶版本,vim 可以用颜色或底线等方式来显示一些特殊的信息。 举例来说,当你使用 vim 去编辑一个 C 程序语言的文件,或者是我们后续会谈到的 shell script 脚本程序时,vim 会依据文件的扩展名或者是文件内的开头信息,判断该文件的内容而自动的调用该程序的语法判断式,再以颜色来显示程序码与一般信息。也就是说, 这个 vim 是个“程序编辑器”。
9.2 vi 的使用
基本上 vi 共分为三种模式,分别是“一般指令模式”、“编辑模式”与“命令行命令模式”。 这三种模式的作用分别是:
一般指令模式 (command mode)
以 vi 打开一个文件就直接进入一般指令模式了(这是默认的模式,也简称为一般模式)。在这个模式中, 你可以使用“上下左右”按键来移动光标,你可以使用“删除字符”或“删除整列”来处理文件内容, 也可以使用“复制、贴上”来处理你的文件数据。
编辑模式 (insert mode)
在一般指令模式中可以进行删除、复制、贴上等等的动作,但是却无法编辑文件内容的! 要等到你按下“i, I, o, O, a, A, r, R”等任何一个字母之后才会进入编辑模式。注意了!通常在Linux 中,按下这些按键时,在画面的左下方会出现“ INSERT 或 REPLACE ”的字样,此时才可以进行编辑。而如果要回到一般指令模式时, 则必须要按下“Esc”这个按键即可退出编辑模式。
命令行命令模式 (command-line mode)
在一般模式当中,输入“ : / ? ”三个中的任何一个按钮,就可以将光标移动到最下面那一列。在这个模式当中, 可以提供你“搜寻数据”的动作,而读取、存盘、大量取代字符、离开 vi 、显示行号等等的动作则是在此模式中达成的。
简单的说,我们可以将这三个模式想成下面的图示来表示:
图9.2.1、vi三种模式的相互关系
注意到上面的图示,你会发现一般指令模式可与编辑模式及命令行界面切换, 但编辑模式与命令行界面之间不可互相切换。
9.2.1 简易执行范例
如果你想要使用 vi 来创建一个名为 welcome.txt 的文件时,你可以这样做:
1. 使用“ vi filename ”进入一般指令模式
直接输入“ vi 文件名”就能够进入 vi 的一般指令模式了。不过请注意,由于一般帐号默认已经使用 vim 来取代,因此如上表所示, 如果使用一般帐号来测试,得要使用绝对路径的方式来执行 /bin/vi 才好!另外,请注意,记得 vi 后面一定要加文件名,不管该文件名存在与否。
2. 按下 i 进入编辑模式,开始编辑文字
在一般指令模式之中,只要按下 i, o, a 等字符就可以进入编辑模式了!在编辑模式当中,你可以发现在左下角状态列中会出现 –INSERT- 的字样,那就是可以输入任意字符的提示。这个时候,键盘上除了 [Esc] 这个按键之外,其他的按键都可以视作为一般的输入按钮了,所以你可以进行任何的编辑。
3. 按下 [ESC] 按钮回到一般指令模式
4. 进入命令行界面,文件储存并离开 vi 环境