2020年2月21日 星期五

vi命令模式与输入模式

1. vi命令模式与输入模式基本知识
在使用vi时,存放数据的存储区域称为编辑缓冲区(editing buffer)。当告诉vi您希望编辑文件时,vi就将文件的内容复制到编辑缓冲区中,因此您处理的内容是数据的副本,而不是原始数据。



1976年,当Bill Joy开发vi时,终端还没有定位键。终端没有支持GUI的鼠标、下拉菜单、功能键,甚至没有<Alt>键。终端上只有字母表中的字母、数字、标点符号和少数几个杂项键,例如<Shift>、<Ctrl>、<Return>和<Esc>。没有鼠标或定位键,就无法找到一个简单的方法将光标从一个位置移动到另一个位置。没有下拉菜单或者特殊键,用户指定命令(例如插入、修改、删除、复制或粘贴)时也就麻烦。

在设计vi时,Joy选择的解决方法就是采用两中不同的模式。在命令模式(command mode)中,所键入的键都被解释成命令。例如,在命令模式中,单个字母x就是删除一个字符的命令;组合字母dd就是删除整行的命令。在命令模式中有许多1个字符和2个字符的命令,而且为了掌握vi,必须学习这些命令。

第二种模式就是输入模式(input mode)。在这种模式中,键入的任何内容都直接插入到编辑缓冲区。例如,在输入模式中,如果键入“Hello Harley”,那么这12个字符将插入到编辑缓冲区中。如果按下x键,则插入一个“x”;如果按下dd,则插入两个字符“dd”。

该系统的可贵之处就在于它不要求任何特殊的设备,例如定位键或鼠标。这样,就可以在任何终类型的终端上使用vi,甚至通过远程连接。该系统仅有的特殊键就是<Ctrl>和<Esc>,而这两个键在20世纪70年代末使用的每个终端上都有。

当然系统为了正常工作,必须有一种方法从命令模式切换到输入模式,并且还能在需要时切换回来。当vi启动时,所处的模式是命令模式。在命令模式中,可以使用集中命令切换到输入模式。一旦处于输入模式中,切换回命令模式就比较简单了,只需按<Esc>(Escape,退出)键。如果已经处于命令模式,当按下<Esc>键时,vi就会发出嘀嘀声。

为了使您对两种模式有感觉,请考虑下述情形。您希望在文件schedule中添加一些数据。为了运行vi,输入命令:

vi schedule

在启动过程中,vi完成3件事情。首先,vi将schedule文件的内容复制到编辑缓冲区。其次,vi将光标定位到缓冲区第一行文本的开头。最后,vi进入命令模式。

使用合适的命令将光标移动到希望添加新数据的位置上。然后键入一条命令,切换到输入模式,并开始键入内容。此时,所键入的任何内容都直接插入到编辑缓冲区。当结束键入时,按<Esc>键切换回命令模式。然后,将编辑缓冲区的内容保存到原始文件,并退出程序。
提示:
注意,尽管是vi从一种模式改变到另一种模式,但是通常在谈话时会说是您(用户)自己进行了改变。例如,我可能说:“当您在命令模式中,可以使用许多命令。”或者“为了向编辑缓冲区添加文本,您必须首先变到输入模式。”

对于计算机来说,这种谈话方式非常普通。这是因为敏感的人希望能控制他们的工具,而不愿意被动的接受一切。

2. 了解vi所处模式的方式
传统而言,vi并不会告诉您现在处于什么模式,而您缺希望知道。

如果您忘记了自己位于什么模式中,那么记住这一点:如果位于命令模式中,那么按下<Esc>键,vi就会发出嘀嘀声。因此,如果不确定位于哪一种模式中,只需按<Esc>键两次。这可以确保您位于名利模式中,并且至少发出一次嘀嘀声(如果您在输入模式中的话,那么第一次按<Esc>键将改变到名利模式,第二次按<Esc>键才会发出嘀嘀声。如果您已经在名利模式中那么按两次<Esc>将会发出嘀嘀声。

如果您是一名vim的用户。默认情况下,无论何时,当进入输入模式时,vim将在屏幕的左下角显示如下提醒:

– – INSERT – –
虽说可以看到一个可视的提醒是一件好事,但是事实是这并不重要。一旦习惯了vi,并拥有了命令模式和输入模式之间来回切换的经验之后,就总是能够知道自己处于什么模式之中了。
提示:
不管您有多聪明,vi会使您更聪明。

沒有留言:

張貼留言