persistent undo seems pretty cool!
enable with :set undofile in .vimrc
NB: if you want to specify a dir for it, you need to create it yourself, or it silently won't work. eg mkdir ~/.vim/undodir, then in .vimrc :set undodir=~/.vim/undodir
I also love the idea of undotree, with branches etc, but found it too confusing in practice. Could the UI be more git-like, I wonder?