diff --git a/src/plugins/fakevim/handler.cpp b/src/plugins/fakevim/handler.cpp
index b6e9bc82ce9fae21c9f1fbf3aad5959b268db877..77d691ca8b18d70c3339d45dc00ffc3a87cd7f9a 100644
--- a/src/plugins/fakevim/handler.cpp
+++ b/src/plugins/fakevim/handler.cpp
@@ -448,6 +448,12 @@ void FakeVimHandler::Private::handleCommandMode(int key, const QString &text)
         m_mode = InsertMode;
         m_tc.beginEditBlock();
         m_lastInsertion.clear();
+    } else if (key == 'I') {
+        m_mode = InsertMode;
+        moveToFirstNonBlankOnLine();
+        m_tc.clearSelection();
+        m_tc.beginEditBlock();
+        m_lastInsertion.clear();
     } else if (key == 'j' || key == Key_Down) {
         m_tc.movePosition(Down, KeepAnchor, count());
         finishMovement();