Why is it so hard to see code from 5 minutes ago?
&gt; Why is it so hard to see code from 5 minutes ago while in the middle of a change?<p>In vim you can do:<p><pre><code>  :earlier 5m
</code></pre>
to see the code you had 5 minutes ago.<p>&gt; (1) If you go to a prior state and then make a new change, you can no longer redo and all those changes are lost.<p>Vim makes a tree, so that doesn&#x27;t happen with it. When you undo and make a new change, you&#x27;re just making a new branch. u&#x2F;Ctrl-r goes from leaf to trunk, but with g-&#x2F;g+ or :earlier&#x2F;:later you can walk the whole tree.<p>Emacs similarly doesn&#x27;t lose changes in this scenario, but instead of making a tree, it has a ring and undo is an action that can be undone.<p>&gt; (2) You can not see a side-by-side comparison of the previous version and the latest version.<p>It&#x27;s probably not complicated to make a macro or function where you go to a previous version, copy the buffer, paste it in a new one on a new window, return the original buffer to the state you were in, and diff the windows for that side-by-side comparison.<p>A command like so suffices:<p><pre><code>  :earlier 5m | %y | later 5m | diffthis | vnew | put | 1d | diffthis
</code></pre>
&gt; (3) There is no visual indicator of where you are are in your undo&#x2F;redo history.<p>Not by default, no. :undolist provides some info, though, and the vimscript undotree() function probably provides all the state of the undotree. There might be plugins that somehow present this info in the interface.<p>&gt; (5) I have found many actions in code editors that do not get added to the undo stack (e.g., changing a debugger option), which caused me problems in the midst of an annoying bug.<p>In vim, only stuff that changes the buffer is added to the undo tree. Navigation or changes of the state of the editor (e.g. editor options or vimscript variables) aren&#x27;t added. Are there really editors where adding actions that aren&#x27;t changes make sense?<p>&gt; (6) There is no indication of what steps were &quot;big&quot; or how long ago they happened.<p>That&#x27;s also true in vim it seems, at least how &quot;big&quot; they where. Each step does have a timestamp, though.<p>&gt; (6) It is tedious to backtrack one small step at a time.<p>You can backtrack by however many steps you want. :earlier also supports specifying by seconds, minutes, hours, days, or file writes.<p>Most cool of all is that vim can persist the undo history. I don&#x27;t know how common that is among editors, but in vim you can go to a file you haven&#x27;t opened in years and undo it all the way to its beginning.