diff --git a/src/plugins/fakevim/handler.cpp b/src/plugins/fakevim/handler.cpp
index 255892e3ed3965923ba0e66fe1d40061bf690abf..3f2a2849efc61bcd085276969213894e0c4e9ea6 100644
--- a/src/plugins/fakevim/handler.cpp
+++ b/src/plugins/fakevim/handler.cpp
@@ -290,7 +290,16 @@ void FakeVimHandler::Private::finishMovement()
 void FakeVimHandler::Private::updateMiniBuffer()
 {
     QString msg;
-    msg = QChar(m_commandCode ? m_commandCode : ' ') + m_commandBuffer;
+    msg = QChar(m_commandCode ? m_commandCode : ' ');
+    for (int i = 0; i != m_commandBuffer.size(); ++i) {
+        QChar c = m_commandBuffer.at(i);
+        if (c.unicode() < 64) {
+            msg += '^';
+            msg += QChar(c.unicode() + 64);
+        } else {
+            msg += c;
+        }
+    }
     int l = cursorLineInDocument();
     int w = columnsOnScreen();
     msg += QString(w, ' ');
@@ -633,6 +642,9 @@ void FakeVimHandler::Private::handleExMode(int key, const QString &text)
             m_commandBuffer = m_searchHistory.at(m_searchHistoryIndex);
         }
         updateMiniBuffer();
+    } else if (key == Key_Tab) {
+        m_commandBuffer += QChar(9);
+        updateMiniBuffer();
     } else {
         m_commandBuffer += QChar(key);
         updateMiniBuffer();