One built-in feature (not enabled by default) that I absolutely love is persistent undo. Love it.

Basically, undo trees can be persisted across vim sessions. Have a read via ":help undo-persistence".

Pairing this with undotree[1] is really handy, as it allows you to see your full edit history, branches and all, and jump back and forth.

[1] https://github.com/mbbill/undotree