diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp
index c150b3b18d32466cd950731e8f19fd228d0859a2..39697b68fe885d3e45d9580fb2efff4d5c6ba488 100755
--- a/src/plugins/fakevim/fakevimhandler.cpp
+++ b/src/plugins/fakevim/fakevimhandler.cpp
@@ -2817,7 +2817,12 @@ int FakeVimHandler::Private::cursorColumnInDocument() const
 
 int FakeVimHandler::Private::linesInDocument() const
 {
-    return m_tc.isNull() ? 0 : m_tc.document()->blockCount();
+    if (m_tc.isNull())
+        return 0;
+    const QTextDocument *doc = m_tc.document();
+    const int count = doc->blockCount();
+    // Qt inserts an empty line if the last character is a '\n', but that's not how vi does it
+    return doc->lastBlock().length()<=1 ? count-1 : count;
 }
 
 void FakeVimHandler::Private::scrollToLineInDocument(int line)