I couldn't find any way to do this in a regular Vim. However, if you are willing to patch Vim, the following may work for you.
The very simple patch (applied against Vim-7.4.052) disables the actual update to the screen that clears the history at the end of a normal command. It does this by returning whether or not
showcmd_is_clear is set prior to updating the display,. (alternatively, you can comment out the if statement and leave just the one original
return line. note: The patch below didn't paste very well; you may have to apply this by hand, though it is just a short one-liner. note: I did not comment out the actual
display_showcmd() because it appears to be used in visual mode to update the display of the number of selected lines or other possibly other stuff. I have not extensively tested this.
--- src/normal.c 2015-02-14 00:21:23.286352257 -0500
+++ src/normal.c 2015-02-14 00:21:25.238352173 -0500
@@ -4029,6 +4029,7 @@
/* Don't actually display something if there is nothing to clear. */
The result looks like this:
A few interesting things to note:
- This shows even simple movements, like
x command actually becomes
dl in the showcmd_buf.
- Commands that change the bottom line obliterate the showcmd area (for example, using the
: command, or entering insert mode (at least in my setup))
- The capture program stopped recording many strokes after I typed a
", but my key sequence is visible in the vim window for my long register specified yank.
- Not shown in the cast, but hitting esc in normal mode shows
^[ in the showcmd area