diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp
index 6c179cf902b33b57cd10dbc42dc9674c87f393fc..bdb46f0824ac33abc8068b2dc4cdec5813b6aad4 100644
--- a/src/plugins/fakevim/fakevimhandler.cpp
+++ b/src/plugins/fakevim/fakevimhandler.cpp
@@ -951,7 +951,15 @@ bool FakeVimHandler::Private::handleCommandMode(int key, int unmodified,
         m_subsubmode = FtSubSubMode;
         m_subsubdata = key;
     } else if (key == 'g') {
-        m_gflag = true;
+        if (m_gflag) {
+            m_gflag = false;
+            m_tc.setPosition(firstPositionInLine(1), KeepAnchor);
+            if (m_config[ConfigStartOfLine] == ConfigOn)
+                moveToFirstNonBlankOnLine();
+            finishMovement();
+        } else {
+            m_gflag = true;
+        }
     } else if (key == 'G') {
         int n = m_mvcount.isEmpty() ? linesInDocument() : count();
         m_tc.setPosition(firstPositionInLine(n), KeepAnchor);