10

我一直是 Vim 的狂热用户,最近对它的工作原理产生了兴趣。

有谁知道是否有教程介绍了将普通文本编辑器转换为具有 Vi/m 功能的基础知识?编程语言无关紧要;我是一个很有经验的程序员。

到目前为止,我找到了以下资源:

4

3 回答 3

9

我想首先你应该知道 VI/VIM 实际上是两个部分。一个是可视化编辑器vi,另一个是单行编辑器,称为ed.

实际上vi被称为可视化ed编辑器,因为它建立在(编辑器)之上。它是 ex 模式的可视化部分,您可以在其中查看和编辑文本,这就是它从visual获得名称vi的原因。

ex 模式实际上是编辑器的复制/表示ed。只需ed在终端上启动并使用默认的 Vi ex 命令即可。视觉替换和插入模式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的《学习 vi 和 Vim 编辑器》这本书:

替代文字

于 2012-06-07T07:56:17.647 回答
2

作为一点灵感,您也许可以看看 Vi 仿真在各种 IDE 中的实现。

于 2012-06-06T21:58:47.787 回答
1

作为经验丰富的 Vi 用户,您将知道使其与其他(可视)编辑器不同的主要有两个关键方面: - 输入模式Esc:在它们之间切换的常用方式 - 上下文键盘映射,其中多个按键建立一个命令

我见过很多人将 Vi 键盘映射的子集添加到现有编辑器中,虽然可以合理地映射一些东西,但获得仿真可能需要相当广泛地替换现有编辑器的键盘处理。

当然,键盘映射有很好的文档记录,所以实现起来应该不会太难。

接下来是实现命令模式。这取决于您要修改哪个编辑器来实现这一点,但我想将焦点更改为底部的永久小部件/控件。一旦将焦点放在该控件上,您就可以轻松处理输入,然后在按下返回时解析和处理命令。

命令模式的基本语法继承自 ed/sed 编辑器,因此您可以查找其实现(或论文)。

总而言之,获得一个看起来很像 vi 的肤浅实现并不是一项艰巨的工作。但真正做好是另一回事。我建议你认真考虑只使用优秀的 Vim ( http://www.vim.org/ )。

于 2012-06-06T12:37:40.120 回答