我一直是狂热的Vim用户,最近对它的运作方式产生了兴趣。
有没有人知道是否有一个教程可以解释将普通文本编辑器转换为具有Vi / m功能的基础知识?编程语言并不重要;我是一位经验丰富的程序员。
到目前为止,我找到了以下资源:
答案 0 :(得分:7)
我想首先你应该知道VI / VIM实际上是两个部分。一个是名为vi
的可视化编辑器,另一个是名为ed
的单行编辑器。
实际上vi
被称为 visual 编辑器,因为它建立在ed
(编辑器)之上。它是ex模式的可视部分,您可以在其中查看和编辑文本,这就是为什么它从 visual 获得名称 vi 的原因。
ex模式实际上是编辑器ed
的复制/表示。只需在终端上启动ed
并使用默认的Vi ex命令。 {strong}视觉,替换和插入模式由vi
使用。例如,有几个命令实际上做同样的事情,例如:
:100 // Go to line 100, ex mode (ed)
100G // Go to line 100, normal mode(vi)
:.,5d // Delete 5 lines, ex mode (ed)
5dd // Delete 5 lines, normal mode (vi)
依旧......
有关这方面的更多信息,我建议您阅读O'Reilly的优秀书籍Learning the vi and Vim editors:
答案 1 :(得分:2)
作为一点灵感,您可以在各种IDE中查看Vi仿真的实现。
答案 2 :(得分:1)
作为一名经验丰富的Vi用户,您将了解主要有两个关键方面使其与其他(可视)编辑器不同: - 输入模式 Esc 和:它们之间切换的常用方式 - 上下文键盘映射,其中多次按键构建命令
我已经看到很多人将Vi键盘映射的子集添加到现有编辑器中,虽然可以合理地映射一些内容,但是获得仿真可能需要相当广泛地替换现有的键盘处理编辑器。
当然键盘映射的文档记录很清楚,因此实现起来应该不会太难。
接下来将实现命令模式。这取决于您要修改哪个编辑器来实现它,但我想将焦点更改为底部的永久窗口小部件/控件。一旦焦点在该控件上,您就可以轻松处理输入,然后在按下返回时解析并处理命令。
命令模式的基本语法继承自ed / sed编辑器,因此您可以在其上查找实现(或论文)。
总而言之,获得一个看起来很像vi的表面实现并不是一件大事。但做得很好是另一回事。我建议你认真考虑使用优秀的Vim(http://www.vim.org/)。