【问题标题】:vim 1.14 source code undo.c [closed]vim 1.14 源代码 undo.c [关闭]
【发布时间】:2014-02-17 19:30:38
【问题描述】:

我正在阅读vim 1.14的代码,对undo.c有一些疑问。

我不明白undo/redo操作的实现,尤其是函数u_undoredo()

我想知道为什么它使用链接列表u_entry

【问题讨论】:

  • 您对 22 年前的 vim 版本感兴趣有什么特别的原因吗? :)
  • :) 只是好奇而已。也因为够短,只有500行,而最新版有3000..
  • 发布该功能怎么样,这样人们就不会浪费时间寻找它?

标签: vim undo


【解决方案1】:

如果您查看最新版本的 vim,在 undo.c 文件的顶部有对 vim 撤消/重做实现的说明。

您可以阅读它here

每个 u_entry 列表都包含一个撤消或重做的信息。

链表对于撤消/重做实现来说是有意义的,因为每个条目只需要引用下一个或上一个条目,并且可以很容易地有效地添加。这也是为什么 vim 的撤消历史创建多个撤消历史分支的原因。除此之外,我不确定你的问题是什么。

【讨论】:

  • 谢谢,我想我需要阅读整个 vim 代码才能弄清楚。
  • 您特别想弄清楚什么?您是否难以理解链表是什么以及它有什么用处?
  • 不,我之前只读了vim 1.14的undo.c,没有读过任何其他部分,undo.c中的函数让我很困惑。正如你所说,我无法澄清我的问题是什么,所以我想我最好在我来询问之前弄清楚整个vim代码的结构。
  • 感谢您的帮助。我想尽快阅读代码,然后我会问我这里是否还有问题。
猜你喜欢
  • 1970-01-01
  • 2010-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-26
  • 2018-08-12
  • 1970-01-01
相关资源
最近更新 更多