Search code examples
vimundo-redo

VIM:: Undo changes on or around the specified text


In VIM is it possible to undo changes on or around a specific block of text? Lets say I make change A right above "if yes", then do changes B, C, D and E in other places on the file. Is it possible to tell vim "undo changes that were done with in +/- 10 lines from if yes?

I've come across another question that suggest this isn't possible, or at least in vanilla vim. Does any know of any plugins that would allow for this behavior?


Solution

  • With this plugin: http://www.vim.org/scripts/script.php?script_id=3304 you can easily move around the undo tree.

    1. So just go back to the original section (around if yes), mark it with ma,
    2. Go back to it's previous state on the tree (even if it undoes other changes).
    3. Copy (yank) the region you want to keep to a register (e.g. select visual lines - V5j"by).
    4. Get back to the actual state (last item on the Gundo tree).
    5. Jump back to the section you want to change ('a)
    6. Deleted the section you want to revert, and replace it with the contents of b register.