詳しくは: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の違いで