如何在Vim中使用更改树


14

是否可以检索我“放弃”的更改分支?例如,我使用撤消了几个操作u,然后更改了插入模式。但是后来我意识到我不想进行此更改,我宁愿回到开始时的状态(撤消之前)。

这些变化会永远消失吗?

Answers:


12

要浏览撤消树,最好的选择是使用Gundo插件。这将创建一个具有特殊绑定的新拆分窗口,以跳转到撤消树内的不同分支,并创建一个预览窗格,向您确切显示树中每个节点之间的变化。


另一个选择是UndoTree。
musicmatze

12

对于像这样的简单情况,您只需按g-

本质上,这样做是按时间顺序遍历更改列表(将a u作为实际更改),而不是线性遍历(如u/ <C-r>)。

例如,如果您插入了几行并按g-,则会发生这种情况:

示范


您是如何创建动画gif的?
guido'2

4
@guido我使用了一个名为mkcast的自定义工具。
2015年

2

不,您不能在树上来回移动。最好的方法是为此工作使用插件。

另一个插件是Undotree。就像Gundo,但有一些区别:

  1. 纯粹的vimscript实现,不需要第三方库(如python),不用担心性能,对于vim来说,处理这个并不是什么大问题。唯一的依赖是'diff'工具,该工具始终随vim一起提供,即使没有'diff',您仍然可以使用此脚本的大多数功能。
  2. 实时更新的撤消树。进行更改后,撤消树将同时更新。
  3. 几个有用的标记,例如当前变更集,下一个重做变更集,保存的变更集等。
  4. 在相对时间戳和绝对时间戳之间切换。
  5. 实时更新撤消窗口。
  6. 清除撤消历史记录的能力。
  7. 更可定制。

4
这不是门把手的帖子直接否定的答案吗?
Caleb 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.