diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp
index 2550f88eb80aac33d001987f37d4ac60c3c5b7ac..035fdb6792846d9cbbec5558aae1836fbde3e6a5 100644
--- a/src/plugins/fakevim/fakevimhandler.cpp
+++ b/src/plugins/fakevim/fakevimhandler.cpp
@@ -877,10 +877,12 @@ EventResult FakeVimHandler::Private::handleCommandMode(int key, int unmodified,
         finishMovement();
     } else if (m_submode == DeleteSubMode && key == 'd') { // tested
         moveToStartOfLine();
+        setTargetColumn(); 
         setAnchor();
         moveDown(count());
         m_moveType = MoveLineWise;
-        finishMovement("d");
+        setDotCommand("%1dd", count());
+        finishMovement();
     } else if (m_submode == YankSubMode && key == 'y') {
         moveToStartOfLine();
         setAnchor();
diff --git a/tests/auto/fakevim/main.cpp b/tests/auto/fakevim/main.cpp
index fd5b06f0931b6c168e60a07cff90df3796e260f8..9e931526f92acfaa31d1cd33277d84d8dcc05a75 100644
--- a/tests/auto/fakevim/main.cpp
+++ b/tests/auto/fakevim/main.cpp
@@ -265,6 +265,10 @@ void tst_FakeVim::command_dd()
     check("dd",  l[0] + "\n@" + lmid(2));
     check(".",   l[0] + "\n@" + lmid(3));
     check("3dd", l[0] + "\n@" + lmid(6));
+    check("8l",  l[0] + "\n    QApp@lication app(argc, argv);\n" + lmid(7));
+    check("dd",  l[0] + "\n@" + lmid(7));
+    check(".",   l[0] + "\n@" + lmid(8));
+    check("dd",  l[0] + "\n@" + lmid(9));
 }
 
 void tst_FakeVim::command_dollar()