diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp
index c739aa9ca415c99bfb76aa71848499cada912d48..af363781457c4878a3f6b4e4893ac7cb62a8ad5a 100644
--- a/src/plugins/fakevim/fakevimhandler.cpp
+++ b/src/plugins/fakevim/fakevimhandler.cpp
@@ -2354,14 +2354,19 @@ void FakeVimHandler::Private::handleExCommand(const QString &cmd0)
                 ("Cannot open file '%1' for reading").arg(fileName));
         }
     } else if (cmd.startsWith(QLatin1String("r "))) { // :r
+        beginEditBlock();
+        moveToStartOfLine();
+        setTargetColumn();
+        moveDown();
         m_currentFileName = cmd.mid(2);
         QFile file(m_currentFileName);
         file.open(QIODevice::ReadOnly);
         QTextStream ts(&file);
         QString data = ts.readAll();
-        EDITOR(setPlainText(data));
+        m_tc.insertText(data);
         showBlackMessage(FakeVimHandler::tr("\"%1\" %2L, %3C")
             .arg(m_currentFileName).arg(data.count('\n')).arg(data.size()));
+        endEditBlock();
     } else if (cmd.startsWith(QLatin1Char('!'))) {
         selectRange(beginLine, endLine);
         QString command = cmd.mid(1).trimmed();