diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp
index 51355da52937791bcf28194479567d3a94de85cc..e61b66e572e7729501fd83171dcfad7f45181777 100644
--- a/src/plugins/fakevim/fakevimhandler.cpp
+++ b/src/plugins/fakevim/fakevimhandler.cpp
@@ -2210,8 +2210,12 @@ void FakeVimHandler::Private::focus()
             setTargetColumn();
             setAnchor();
             commitCursor();
-        } else {
+        } else if (g.submode != NoSubMode || g.mode == ExMode) {
             leaveVisualMode();
+            setPosition(qMin(position(), anchor()));
+            setTargetColumn();
+            setAnchor();
+            commitCursor();
         }
 
         bool exitCommandLine = (g.subsubmode == SearchSubSubMode || g.mode == ExMode);