我刚刚开始学习Linux,之前所有的编程经验都是使用Windows平台。我遇到了 Vim 编辑器并读到它是模态编辑器与记事本不同,记事本被称为非模式编辑器。
您能解释一下无模式编辑器和模式编辑器之间的区别吗?
答案1
普通的“无模式”编辑器就像 Windows 上的记事本:只有一种模式,您可以在其中输入文本。
Vi 及其后继者 Vim 都是模态的:有两种主要模式1、插入模式在编辑器中输入文本并将其提交到文档中,以及正常模式您可以通过键盘输入参数,执行各种功能,包括:在文档中移动光标、搜索和操作文档中的文本(例如,剪切和粘贴)。
这维基百科关于 Vi 的文章在模态界面上有很好的入口。
主要吸引力最初是在鼠标广泛采用之前的 Unix 计算早期所必需的,是完全键盘驱动的编辑。这种方法现已在 Unix 领域得到更广泛的采用,例如被各种网络浏览器。
这个很棒的项目,维姆手拿包,提供了模式之间切换概念的清晰可视化。
1. 还有另外两种模式,*命令模式*用于像在 shell 中一样输入命令,以及*视觉模式*用于选择要操作的文本。
答案2
在用户界面设计中,模式是计算机程序或任何物理机器界面中的独特设置,其中相同的用户输入将产生与其他设置中不同的感知结果。最著名的模态界面组件可能是标准计算机键盘上的 Caps Lock 和 Insert 键,这两个键在按下后都会将用户的输入设置为不同的模式,然后在再次按下后返回到常规模式。
不使用模式的接口称为无模式接口。[1]无模式接口旨在通过使用户无法犯错误来避免模式错误[2]。
答案3
不同之处在于,在模式编辑器中,您必须显式切换到一种模式才能输入文本。在该模式下,按下某个键会将该键的字符添加到光标所在的屏幕上,就像打字机一样。然后,您必须显式切换回另一种模式才能执行其他操作,例如移动光标、搜索、选择区域或复制文本。
无模式编辑器始终允许您插入文本,并且如果您希望某个键执行插入字母以外的操作(例如按住 Control 并按 C 来复制所选文本),则需要使用修饰键。
如果您认为按住修饰键处于不同的模式,那么它们实际上并没有那么不同。真正的区别在于切换模式所需的明确击键。在无模式编辑器中,您可以将修改键视为在按下时切换到一种模式,然后在释放时切换回另一种模式。
已接受答案的这一部分是完全错误的:
主要吸引力最初是在鼠标广泛采用之前的 Unix 计算早期所必需的,是完全键盘驱动的编辑。
仅键盘编辑就可以正常工作,无需显式模式切换。您可以移动光标并使用组合键选择文本区域。例如,Ctrl+A 移动到行首,Ctrl+Spc 设置后面的标记,然后 Ctrl+E 移动到行尾,从而选择整行。