撤消vim中打开缓冲区以来的所有更改

如何从打开缓冲区撤消所有更改? 我想可能有某种forms:earlier这样做。

更新 :许多人build议解决scheme遍历到早期的文件写入。 这不是我要求的。 我希望返回到最初将文件加载到缓冲区时的原始状态,不pipe从那时起有多less次写入。

要将当前缓冲区恢复到Vim在撤消列表中logging的第一个更改之前的状态(请参阅:help undo-tree ),请使用命令

 :u1|u 

你可以使用

 :edit! 

命令进入最早保存的状态。 请参阅:help edit! 了解更多信息。

你也可以检查像gundo.vim ( 可以在这里find ),它以graphics方式显示整个撤消树,你可以很容易地在点之间跳转。 然后是我还没有使用的histwin plugin ,但提供了类似的function。

从文档

:u [ndo] {N}更改编号{N}后跳转到。 请参阅| undo-branches | 为{N}的含义。 {Vi无此function}

如果你input:u 1 ,看起来是在第一次改变之后; 按下或键入:u会回到变化。

否则,您可以使用非常大的计数来:earlier:earlier 100000000例如:earlier 100000000100000000g-

如果你把它放到一个映射/命令中,它可以做任何这些没有太多的麻烦。 例如

:nnoremap <C-F12> :earlier 100000000<CR>

要访问先前保存的文件状态,我认为以下工作:

:earlier 1f

从文档:

  :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 {N}m Go to older text state about {N} minutes before. 

这应该会有帮助…甚至你有{N}小时之前的{N} h。

graphics解决scheme:

Gundo插件允许对撤消历史中的更改进行可视比较。

打开Gundo的“撤消历史窗格”,inputG到最后一行,然后我们可以回到原来的文件。

在neovim中 ,你可以使用:u0