diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp
index 4be2b08e94cd56031c88e01c4192324a0627909a..7c534deb9b3acc41e72478da4d389b806dcdd25b 100644
--- a/src/plugins/fakevim/fakevimhandler.cpp
+++ b/src/plugins/fakevim/fakevimhandler.cpp
@@ -941,8 +941,8 @@ EventResult FakeVimHandler::Private::handleCommandMode(int key, int unmodified,
         for (int i = count(); --i >= 0; )
             foreach (QChar c, savedCommand)
                 handleKey(c.unicode(), c.unicode(), QString(c));
-            enterCommandMode();
-            m_dotCommand = savedCommand;
+        enterCommandMode();
+        m_dotCommand = savedCommand;
     } else if (key == '=') {
         m_submode = IndentSubMode;
     } else if (key == '%') {
@@ -1249,7 +1249,8 @@ EventResult FakeVimHandler::Private::handleCommandMode(int key, int unmodified,
         setAnchor();
         m_submode = DeleteSubMode;
         moveRight(qMin(count(), rightDist()));
-        finishMovement("l");
+        m_dotCommand = QString("%1x").arg(count());
+        finishMovement();
     } else if (key == 'X') {
         if (leftDist() > 0) {
             setAnchor();