为什么 Vi 有多种模式?

Dan*_*ale 6 vim vi

为什么 Vi 有多种模式?我对模式的功能不感兴趣,除非这是使用不同模式的原因。我只对多种模式的设计/工程原因感兴趣。

gol*_*cks 12

考虑主要的两种模式,COMMAND 和 INSERT,演示了模式界面的目的。

在 INSERT 模式下,您可以正常键入,将文本插入到文档中。您可以绑定键来执行特殊功能,尽管这些通常在复杂性上受到限制。

命令模式有点像一个无限的特殊功能。可以使用 来实现类似的东西Ctrl,这样你就可以按住它并按下其他一些特殊键,实际上大多数通用编辑器都是这样工作的:你使用 ctrl-x 来剪切,ctrl-p 来粘贴等等。但是,这种方法限制了你的能力;按住 ctrl 并输入“open myfile.txt”会有点痛苦。

GUI 编辑器和一些 TUI 编辑器通常使用下拉菜单来解决这个问题。然而,这仍然是有限的:如果您有很多功能,您最终需要笨拙的级联嵌套菜单集。

vi,它vim基于(并复制其功能)不使用下拉菜单,尽管因为它是基于屏幕的,所以它可能有。对此的一种解释是,它旨在作为标准化实用程序的标准化扩展ed,它是基于行的,因此不能使用可视菜单。一些基本的 vi 命令模式命令源自ed-- -- 而不是用菜单选项替换命令,基于相同文本的ed命令在 vi 中工作(并对其进行了扩展)。

这当然是有好处的,这可能是它vim历史悠久的重要原因。菜单要求您滚动选项集,而 TUI 界面没有鼠标,这可能需要特殊模式才能访问,或使用 F 键等。可以说它们在 GUI 应用程序中更加尴尬需要将手从键盘上移开并操作鼠标,然后有上一段提到的复杂性限制。1 vim模态界面的选择不会遇到这些问题。它还最大化了可用的屏幕区域。

可以观察到,由于简单、非模态、菜单和 ctrl 驱动的界面,许多大型、复杂的图形应用程序(例如集成开发环境 (IDE) 和文字处理器)的编辑方面与 vim 相比是有缺陷的。这样考虑,vim 使用模式的原因是使其成为一个更强大的工具。


1、虽然gvim确实有复制很多常用命令的下拉菜单,但相比COMMAND模式显得笨拙;菜单系统的唯一优点是易于学习。 您不必记住很多事情,但完成所有事情需要更长的时间。

  • 在鼠标前、光标前键、ASCII 键盘时代,将命令行编辑器转变为可视化编辑器有两个合理的方向。一种由 VI 使用,保留了命令行中的大部分“普通字符”命令,但随后要求您切换到插入模式以将这些相同的字符输入到文件中。Emacs 使用的另一个是切换到使用控制键和/或转义序列来发出命令,消除了模式之间的区别,但需要不同的命令和交互结构。哪个“更好”是宗教辩论。 (6认同)