Unix工程师在平时工作时,需要通过各种手段跟Unix系统进行交流、进行对话。如在系统防火墙管理中,工程师必须把自己的想法,如允许哪些数据包通过,哪些数据包过滤掉等等,告诉给Unix操作系统。而无疑vi程序就是这么一个工具。它能够为工程师与Unix操作系统之间建立一座沟通的桥梁。
Vi是英文visual的缩写,是Unix操作系统下最受欢迎的全屏幕编辑程序。它的功能十分丰富,想通过一篇文章的篇幅介绍其全部的功能,有点不现实。为此在这里,笔者从如何提高vi程序利用率与开发速度的角度,谈谈vi工具的实用技巧以及需要注意的地方。
一、vi编辑程序在工作缓冲区中完成全部工作。
Vi编辑程序有一个特点,她的工作全部是在缓冲区中完成的。工程师在编辑对话开始之前,vi编辑程序会从硬盘中将用户编辑的文件读入工作缓冲区内。在工程师进行编辑的过程中,全部在缓冲区内完成,直到把工作缓冲区的内容写回到硬盘中。工程师在编辑新文件时,vi编辑程序也并不立即在硬盘中建立文件,而是先把内容保存在缓冲区内。然后需要管理员通过w命令把文件保存到硬盘中。
这种机制,即有好处,也有坏处。由于系统从缓冲区读取数据要比在硬盘中读取数据快的多。故利用vi来编辑程序会有效率会比较高。但是缓冲区的内容由于没有及时保存在硬盘上,所以如果Unix服务器突然断电的话,缓冲区中的内容将会全部丢失。从而带来一些不必要的损失。所以笔者建议,在利用vi编辑程序编写大型程序的时候需要特别注意,要及时利用w命令来保存缓冲区中的内容。不过需要说明的是,vi编辑程序毕竟不是一个文本编辑软件。若利用这个工具来建立复杂的文件,不是明智的做法。
二、选择正确的模式来操作。
Vi编辑程序有三种操作模式,分别为命令模式、输入模式和底行命令模式。
在命令模式下工程师输入的内容被翻译成命令传递给vi编辑程序。如“a”命令就是其中比较有代表的一个。命令模式下工程师键入的所有字符都不会在屏幕上显示出来;工程师也不用按回车键来执行命令。Vi编辑程序下的命令通常情况下都是单个字符,他们往往是英文操作名称的首字符。如上面提到的英文字母“a”就表示插入字符等等。
在输入模式下,工程师才能够对文件进行编辑。通常情况下,工程师刚进入vi编辑程序时是处于命令模式下。此时工程师是无法对文件进行编辑的。在输入模式下,vi编辑程序就好象是一个类似于打字机软件。工程师在此键入的内容,都将作为文本来接受并显示给管理员。完成输入或者编辑文本工作后,按Esc键返回到命令模式中。
当工程师编辑好文本内容后,需要用冒号开始的命令把vi的光标移动到屏幕的底行。此时vi编辑程序进入到底行命令模式。工程师往往需要把冒号跟其他命令结合使用,如“:w”表示保存缓冲区中的文件。在底行命令模式下,主要用来执行一些特别的功能。如可以在不退出vi编辑环境的情况下实现替换文本、执行shell命令等功能。
由于不同的模式完成不同的工作,故工程师需要了解这三种模式的不同特点,然后根据实际情况选择合适的操作模式。具体来说,笔者有如下建议。如果只是查看文件或者说还不确定该如何修改时,最好在命令模式下查看文件。因为在命令模式下是只读的,可以避免对原有文件的误操作。同时,文件编写完成之后,要及时转换到底行模式下,并利用w等命令把修改后的文件及时保存到硬盘中。可见合适的模式有利于提高工程师的工作效率,同时又可以避免误操作对原有文件的不利影响。
三、掌握一些快捷操作方式。
在vi编辑程序下,是无法利用鼠标来进行操作的。光标的移动、文字的插入与删除等等靠键盘来完成。所以一个有经验的Unix工程师往往需要掌握一些快捷方式,以提高vi编辑程序的利用效率。往往通过观察对方使用vi编辑程序的方式,就可以判断对方是否有足够的Unix使用经验。
笔者认为,工程师首先需要学会的是如何快速定位。以为无法使用鼠标进行光标定位,故工程师要利用vi编辑程序对文件进行插入、添加、修改或者删除操作时,就必须利用键盘把光标定位到适当的位置,从而完成对指定位置进行插入、添加等操作。如工程师要能够迅速确定光标当前的位置(如按ctrl键+g组合键),然后可以通过G参数来把光标移动到指定的行。如IG可以将光标移动到文件的第一行;输入G则可以将光标移动到文件的最末行。
除了学会如何迅速定位光标外,工程师还要学会如何快速进行删除操作。在vi编辑程序中,可按字符、单词、行、句子以及段落为单位进行删除。如在vi的命令模式下,若工程师需要删除一个词的话,则可以先降光标移动到这个词的第一个字符上,然后按下dw两个字符键。如果需要同时删除多个词的话,则需要在命令dw前加上倍乘因子。同时工程师还可以以行为单位进行删除。工程师将光标移动到该行的任意位置,按dd键即可。如果按2dd,则可以连续删除两行。依次类推。
虽然vi编辑程序无法利用鼠标来操作,但是只要掌握了这些快捷操作,仍然可以非常迅速的利用这个编辑工具跟Unix操作系统进行对话。笔者在面试新员工的时候,往往会让面试者使用vi工具来编辑一个文件。通过这个方法可以在一定程度上判断出对方在Unix操作系统上的工作经验是否跟他们的简历相符。故笔者建议一些想在Unix系统上有所作为的年轻人,要在vi这个编辑工具上多花费一些功夫。这是非常有必要的。