How to undo all changes in a buffer made since it was open in Vim?

后端 未结 7 740
执念已碎
执念已碎 2021-01-30 08:38

How can I undo all changes since opening a buffer? I imagine there may be some form of :earlier that does this.

Update: Many are suggesting

相关标签:
7条回答
  • 2021-01-30 09:02

    To access previously saved file status, I think the following work :

    :earlier 1f

    From the documentation :

     :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.
    
    0 讨论(0)
  • 2021-01-30 09:14

    In vim 8.1+ as well as in neovim, you can just use :u0

    0 讨论(0)
  • 2021-01-30 09:15

    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>

    0 讨论(0)
  • 2021-01-30 09:16
    :earlier {N}m Go to older text state about {N} minutes before.
    

    That should help... And even you have {N}h which is about {N} hours before.

    0 讨论(0)
  • 2021-01-30 09:23

    A graphic solution:

    The Gundo plugin allows visual comparison of changes in the undo history.

    Open Gundo's "undo history pane", type G go to the last line, then we can back to the original file.

    0 讨论(0)
  • 2021-01-30 09:25

    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.

    0 讨论(0)
提交回复
热议问题