20

让我这样提出问题。我在 vim 中打开一个新文件,(版本 1)

#include<stdio.h>
main()
{
...blah
}

然后用于<Esc>:w<Enter>写入文件。然后进行更改(版本 2)

#include<stdio.h>
main()
{
...blah
... edit1
... edit2 //and large number of changes here and there in code
}

然后我使用<Esc>:w<Enter>.

有没有办法直接撤消对版本 1 的更改(因为它是最后一次保存),即无需不断按下ufor undoing

4

3 回答 3

30

在 Vim 的帮助下:

:earlier {N}f   Go to older text state {N} file writes before.
                When changes were made since the last write
                ":earlier 1f" will revert the text to the state when
                it was written.  Otherwise it will go to the write
                before that.
                When at the state of the first file write, or when
                the file was not written, ":earlier 1f" will go to
                before the first change.

因此,如果您在第二次保存后没有进行更改,您可以做您想做的事情:

:earlier 1f

另一方面,如果您在第二次保存后进行了未保存的更改,则:

:earlier 2f

将解决您的问题。

:help :earlier:help :undolist

于 2013-08-29T00:32:55.700 回答
5

你可以很容易地回到你第一次打开文件的时候。只需在前面输入一个数字u

10000u, 将撤消10000时间。如果这还不够,请尝试1000000u:)

如果你想一点一点地撤消,你可以以任何增量来做,试试5u

如果您只想从磁盘重新加载文件,请使用:e.

于 2013-08-29T00:18:52.273 回答
0

把它放到你的 .vimrc 中。在正常模式下,您将撤消直到上一次保存。再次按下它将撤消,直到在此之前保存。<C-R>如果您进行了任何更改,您仍然可以回到原点。
nnoremap U :ea 1f<CR>

于 2019-01-05T04:40:29.107 回答