8

在 vim 中,我想按时间顺序撤消所有缓冲区中的所有更改。

例如,在 vim 会话中,我通常打开许多选项卡,每个选项卡中有许多窗口。使用u撤消(或g;/g,移动更改列表),vim 移动对该缓冲区所做的更改,即使在其他缓冲区中有最近所做的更改。(我承认,这是我大部分时间想要的。)

但是有没有办法按时间顺序向后移动所有缓冲区的变化?(我想 vim 会从一个选项卡跳到另一个选项卡,这没关系。)

为什么这会有用?......主要是这样当我在休息后恢复编码时,我可以提醒自己“我在做什么”,即我上次所做的所有更改。

(使用 macvim 7.3)

更新:关于使用 git / mercurial 的回应很有意义(特别感谢git stash),但我仍然觉得这个功能很有用,因为它让我按顺序返回最近的更改,使用语法着色,在 vim 内部等)

4

2 回答 2

4

你可以走很长一段路undolist

:bufdo echo expand('%') | undolist

结果,例如对于一个简单的编辑会话:

SpiritParser.cpp
number changes  when               saved
     1       1  13:57:51
SpiritParser.h
number changes  when               saved
     1       1  13:57:55

要对所有可见窗口执行此操作,请windo使用bufdo. 如果您有多个选项卡,请制作

:tabdo windo echo expand('%') | undolist
于 2012-05-23T12:01:40.483 回答
1

您应该使用某种版本控制:Git、Mercurial、Subversion 等等……</p>

每天早上,您都可以阅读项目日志并查看以前的提交以查看更改的内容,可以创建分支以处理特定功能,编写干净且描述性的提交消息以更好地了解以前的更改等。

或者你可以做类似的事情:windo u。但这听起来很乱。

于 2012-05-23T11:46:11.350 回答