title: In Vim, why is temporary Normal Mode (Ctrl-O from Insert Mode) executing commands much slower?
body: <p>Usually, when I want to undo changes while editing text in Vim, I have to:</p>
  
  <ol>
  <li>Exit Insert mode with <code>Esc</code></li>
  <li>Press <code>u</code> to undo changes</li>
  <li>Enter into Insert mode with various commands (<code>i</code>, <code>o</code>, etc...)</li>
  </ol>
  
  <p>Now, I am just a beginner, but I understand that while in Insert mode, you can temporarily escape into Normal mode for one command by using <code>Ctrl-O</code>.</p>
  
  <p>Knowing this, when I want to undo changes in text, I figured: why not just escape into temporary Normal mode and press <code>u</code> and not have to deal with all the shenanigans of <code>Esc</code> and switching between modes?</p>
  
  <p>So I did the following:</p>
  
  <ol>
  <li>Escape into temporary Normal mode for one command, using <code>Ctrl-O</code></li>
  <li>Press <code>u</code> to undo changes</li>
  <li>I am automatically in Insert mode and continue editing.</li>
  </ol>
  
  <p><strong><em>It works... except it's VERY, VERY. slow.</em></strong> The cursor would be immediately placed at the position after the undo is executed, but the changes in the text aren't displayed until after ~2 seconds. That's a very long time.</p>
  
  <p>I thought it was just my computer running slowly for some reason but I did the old-school way and the undo was executed instantly. Granted, this isn't the case for all commands. When I try to <code>dd</code> and delete the whole line, it works just as expected - instantly.</p>
  
  <p>So my question is: why? Is temporary Normal mode not the same as the Normal mode one would enter from pressing <code>Esc</code>? Does it have anything to do with buffers, or swap files, or whatever is going on behind the scenes? Is it the way <code>undo</code> is implemented in the Vim editor?</p>