Vim stores all deleted text automatically, up to a max of 10, I think.
Probably very possible to extend that with some advanced vimscripting.
Vim supports practically unlimited undo with branching history. You can visualize it and hop to any undo with a plugin.