diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp
index c4dbbc1981d6eb3617638c877e3b61705d82cf04..1832521d848c35a1e35ab11a9062f3b3108bb883 100755
--- a/src/plugins/fakevim/fakevimhandler.cpp
+++ b/src/plugins/fakevim/fakevimhandler.cpp
@@ -1497,9 +1497,12 @@ EventResult FakeVimHandler::Private::handleCommandMode(int key, int unmodified,
         m_beginEditBlock = false;
         moveToFirstNonBlankOnLine();
         if (key == 'O')
-            moveUp();
-        moveToEndOfLine();
+            moveToStartOfLine();
+        else
+            moveToEndOfLine();
         m_tc.insertText("\n");
+        if (key == 'O')
+            moveUp();
         insertAutomaticIndentation(key == 'o');
         endEditBlock();
     } else if (key == control('o')) {