Undo all changes since opening buffer in vim
Solution 1:
To revert the current buffer to the original state prior to the very
first change recorded in its undo list (see :help undo-tree
), one
can use the following two consecutive invocations of the :undo
command:
:u1|u
The first command (:undo 1
) reverts to the state of the buffer just
after the very first registered change, while the second command
(:undo
) reverts that first change itself.
Starting with version 8.1 (see :helpg Patch 8.0.1441
), Vim accepts
the change number 0 as a valid argument to the :undo
command,
finally providing a way to refer to the state prior to any registered
changes. This makes it possible to achieve the same effect in
a single-command invocation:
:u0
Solution 2:
You can use the
:edit!
command to get into the earliest saved state. See :help edit!
for more information.
You can also check something like gundo.vim
(can be found here), which displays the whole undo tree graphically, and you can easily jump between points. Then there is the histwin plugin
which I did not used yet, but offers similar functionality.
Solution 3:
In vim 8.1+ as well as in neovim, you can just use :u0
Solution 4:
From the documentation
:u[ndo] {N} Jump to after change number {N}. See |undo-branches| for the meaning of {N}. {not in Vi}
If you type
:u 1
it appears to go to after the first change; pressing u
or typing :u
will then go back to the change.
Otherwise, you can use a very large count to :earlier
or g-
e.g.
:earlier 100000000
or 100000000g-
If you put this into a mapping/command, it could do any of these without too much trouble. e.g.
:nnoremap <C-F12> :earlier 100000000<CR>