我正在阅读vim 1.14的代码,我对undo.c
有一些疑问。
我不理解undo / redo操作的实现,特别是在函数u_undoredo()
中。
我想知道为什么它使用链接列表u_entry
?
答案 0 :(得分:2)
如果您查看最新版本的vim,可以在undo.c
文件的顶部解释vim的撤消/重做实现。
您可以阅读here。
每个u_entry列表包含一个撤消或重做的信息。
链接列表对于要使用的撤消/重做实现是有意义的,因为每个条目只需要引用下一个或上一个条目,并且可以轻松有效地添加。这也是vim的撤消历史记录创建撤消历史记录的多个分支的原因。除此之外,我不确定你的问题是什么。