为什么 Vi 有多种模式?我对模式的功能不感兴趣,除非这是拥有不同模式的原因。我只对多种模式的设计/工程原因感兴趣。
答案1
考虑到主要的两种模式(命令和插入),演示了模式界面的用途。
在 INSERT 模式下,您可以正常键入,将文本插入文档中。您可以绑定按键来执行特殊功能,尽管这些功能通常在复杂性上受到限制。
命令模式有点像无限的特殊功能。类似的东西可以使用 来实现Ctrl,这样你按住它并按其他特殊键,事实上大多数通用编辑器都是这样工作的:你使用 ctrl-x 进行剪切,ctrl-p 进行粘贴等。但是,这个方法限制了你能做的事情;按住 ctrl 并输入“open myfile.txt”会有点痛苦。
GUI 编辑器和一些 TUI 编辑器通常通过下拉菜单来解决这个问题。然而,这仍然是有限的:如果你有很多功能,你最终需要尴尬的级联嵌套菜单集。
vi
,它vim
基于(并复制其功能)不使用下拉菜单,尽管因为它是基于屏幕的,所以它可以使用。对此的一种解释是,它旨在作为标准化效用的标准化扩展ed
,即基于行因此不能使用可视菜单。一些基本的 vi COMMAND 模式命令源自ed
——而不是用菜单选项替换命令,相同的基于文本的ed
命令在 vi 中工作(并进行了扩展)。
vim
当然,这一切都有一个优点,这可能是历史上受欢迎的主要原因。菜单要求您滚动浏览选项集,使用没有鼠标的 TUI 界面,这可能需要特殊模式才能访问,或使用 F 键等。可以说它们是均匀的更尴尬在 GUI 应用程序中,您需要将手从键盘上移开并操作鼠标,然后存在上一段中提到的复杂性限制。1 vim
的选择模式界面不会遇到这些问题。它还最大化了可用的屏幕区域。
可以看出,编辑与 vim 相比,许多大型、复杂的图形应用程序(例如集成开发环境 (IDE) 和文字处理器)在某些方面存在缺陷,因为它简单、非模态,菜单和ctrl驱动的界面。从这个角度来看,vim 使用模式的原因是为了使其成为一个更强大的工具。
1. 虽然gvim
确实有重复许多常用命令的下拉菜单,但与 COMMAND 模式相比,它们显得笨拙;菜单系统的唯一优点是它易于学习。 你不需要记住太多的事情,但是做完每件事都需要更长的时间。
答案2
如果它没有控制模式和插入模式,它就无法区分对文本的操作和文本本身。