diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp
index 17113432f0b938affb8e68797f30a5ab926ab4e5..933fd101b10b066866889c1922b735adff90bca2 100644
--- a/src/plugins/fakevim/fakevimhandler.cpp
+++ b/src/plugins/fakevim/fakevimhandler.cpp
@@ -757,6 +757,7 @@ public:
         { UNDO_DEBUG("JOIN"); cursor().joinPreviousEditBlock(); }
     void breakEditBlock() {
         QTextCursor tc = cursor();
+        tc.clearSelection();
         tc.beginEditBlock();
         tc.insertText("x");
         tc.deletePreviousChar();
@@ -2063,8 +2064,8 @@ EventResult FakeVimHandler::Private::handleCommandMode(const Input &input)
     } else if (input.is('A')) {
         setUndoPosition(position());
         breakEditBlock();
-        enterInsertMode();
         moveBehindEndOfLine();
+        enterInsertMode();
         setDotCommand(QString(QLatin1Char('A')));
         m_lastInsertion.clear();
         updateMiniBuffer();