【问题标题】:Any Tutorial on how to create a Vim-like editor? [closed]关于如何创建类似 Vim 的编辑器的任何教程? [关闭]
【发布时间】:2012-06-09 18:50:21
【问题描述】:

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

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

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

【问题讨论】:

  • 听起来你在对我的问题中回答了你自己的问题。 ;)
  • @Almo,=)。是的,我花了很多时间试图找到现有的简单实现。希望其他人能想出比我更好的教程。 ;-)

标签: vim text-editor vi


【解决方案1】:

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

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

ex 模式实际上是编辑器ed 的复制/表示。只需在终端上启动 ed 并使用默认的 Vi ex 命令。 vi 使用 visualreplaceinsert 模式。例如有几个命令实际上在做同样的事情,例如:

: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

【讨论】:

  • 哇,关于vied 的有趣事实。感谢您的推荐。我相信我有这本书。将不得不检查我的书架。 =) 可以让我更好地了解 Vi。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-01-08
      • 2012-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-28
      • 1970-01-01
      • 2010-10-27
      • 2011-06-29
      相关资源
      最近更新 更多