diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp
index 553d1e19ec025a9315db54f8ddc291b9ab7c86c9..46bda9ecb92fedf03a396697680e22fc17963c01 100644
--- a/src/plugins/fakevim/fakevimhandler.cpp
+++ b/src/plugins/fakevim/fakevimhandler.cpp
@@ -671,16 +671,13 @@ bool FakeVimHandler::Private::handleCommandMode(int key, int unmodified,
         moveToStartOfLine();
         setAnchor();
         moveDown(count());
-        moveLeft();
-        m_registers[m_register] = recordRemoveSelectedText();
-        m_submode = NoSubMode;
-        m_mode = InsertMode;
+        m_moveType = MoveLineWise;
         finishMovement("c");
     } else if (m_submode == DeleteSubMode && key == 'd') {
         moveToStartOfLine();
         setAnchor();
         moveDown(count());
-        m_registers[m_register] = recordRemoveSelectedText();
+        m_moveType = MoveLineWise;
         finishMovement("d");
     } else if (m_submode == YankSubMode && key == 'y') {
         moveToStartOfLine();