vim - Vim 中如何使用撤消树?

标签 vim undo

This answer说:

Vim's undo/redo system is unbeatable. Type something, undo, type something else, and you can still get back the first thing you typed because Vim uses an undo tree rather than a stack. In almost every other program, the history of the first thing you typed is lost in this circumstance.

我还是第一次听说这个。如何沿着树原路返回?

最佳答案

另请参阅 :h undo-redo,其中列出了所有命令及其用法。

有两种方法可以遍历撤销树。一是“回到过去”。 g+g- 将以时间顺序或逆时间顺序遍历树中的所有节点(这可能有点令人困惑,因为它可以在撤消分支之间任意跳转,但如果你做 g- 足够长的时间,你最终总会到达你需要去的地方)。 :earlier:later 采用时间描述符,例如 7m1h;同样,这可以让您在撤消分支之间任意跳转。

另一种方法是使用 :undo n 跳转到树中的特定节点,其中 n 是操作的编号。 (所有操作,即文本添加、删除、替换,都会在您执行这些操作时按顺序编号。)您可以通过 :undolist 查找撤消树的叶子上的操作编号。这将使您轻松地在分支之间跳转。然后,您可以使用 uCtrl-R 在该分支上上下移动。

Vim 帮助中有一些很好的例子。弄清楚它是如何工作的最好方法就是尝试一下。

关于vim - Vim 中如何使用撤消树?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1088864/

相关文章:

vim - 有没有类似vim的code-collapse-plugin?

python - VIM/Python插入模式完成弹出菜单

vim - ViM有什么机制可以暂时覆盖整个控制台?

mongodb - 在 Meteor/React 中实现可撤销的 MongoDB 事务

matlab - Matlab是否支持撤销删除代码

vim - 为没有扩展名的文件设置 vim 文件类型,仅

vim - 如何在 Vim 中使用循环定义多个映射

javascript - HTML5 Canvas 绘图历史

c - 如何在 C 中撤消 Tic-Tac-Toe 游戏中的多个步骤

java - 将单个 JTextArea 与多个 UndoManager 一起使用