https://github.com/sjl/gundo.vim
我が家の設定
nmap U :<C-u>GundoToggle<CR>
詳しくは:h undo-treeを見てもらうとしてここでは概要だけ。
windowsのメモ帳を除く一般的なエディタは複数のアンドゥ/リドゥ履歴を持っています。A→B→C→Dと編集して今Dの状態だとすると、ここからCtrl+Z(vimだとu)でCへ、もう一度Ctrl+ZでBへ、さらにAへと履歴をさかのぼれます。またAに戻ったあとCtrl+Y(vimだと<C-r>)を入力するとBへ、続いてCへ、Dへと遷移できます。ここでDからCにアンドゥで戻って全然関係ない入力をするとEができ、A→B→C→Eという履歴になります。こうなるとDへは移動できなくなります。

vimはこの一般的な編集履歴に加えて時間軸での履歴を持っています。A→B→C...ではなく最初→2秒後→5秒後→32秒後→...というように、変更があった時刻ごと覚えている感じです。わかりにくくいえばgit logとgit reflogの違いです。

上図でいま6に居るとすると、uの代わりにg-を入力すると5に、もう一度g-で4(つまりD)に切り替えられます。<C-r>の代わりにg+すると5,6にそれぞれ遷移します。A→B→C→Eではなく1→2→3→4→5→6という軸を移動することになります。(他にも:later 4などのコマンドもありますが詳しくはhelpを読んでください)
上記を踏まえるとgundo.vimのやってることは明白です。1→2→3→...の時間軸をビジュアライズしてくれています。

71まで編集したあと65まで戻り、66,67と編集しましたがやっぱりやめて、また65まで戻って68まで編集したけど、やっぱり全部やめて64より前(上の画像だと見切れてる……)まで戻って72として再スタートを切ったところです。その間の操作は全部vimが覚えていて、gundo.vimはそれをわかりやすく表示してくれています。
カーソルのあるところ(68)と前回(65)の差分が左下のバッファに表示されていて、そのままEnterを押下すると68の時点まで一気に移動できます。68に移動したあと編集を再開すると、68のツリーが伸びていく感じになります。
要するに、わかりにくくいえばgit reflog --graphみたいな架空のコマンドだということです。終わり。