I have a file x.cpp which a while ago contained, say, “AAAAAAA”.
I accidentally copied over it with another file containing, say, “BBBBBBB”.
PANIC!
Hang on, let’s look at .x.cpp.swp — there’s a load of binary junk then “BBBBBBB” then more junk then “AAAAAAA”, so it looks like the swap file contains both versions. Hooray!
So, how do I recover the “AAAAAAAA” version? If I do vim -r then I get “BBBBBBB”. Unfortunately, I can’t recover-then-hit-undo. Is there an incantation? Can I hack the swap file?
Massive gratitude if you know a trick here.
No, but if you use Vim 7.3+ you can enable undofiles
To get started:
That way you can navigate the undo tree even after a (involuntary) close of your editor.
So yes, the usual trick of going back in time, yanking, going forward in time, pasting will work even after the editor was restarted.
100g-(locate text, yank into register),100g+(locate destination, put register).