diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp
index 3f6bb103c59a0d28e84f0de5d5287201f7acab3a..784047a1198ac9c137d94a2a160d7a5f122f571c 100644
--- a/src/plugins/fakevim/fakevimhandler.cpp
+++ b/src/plugins/fakevim/fakevimhandler.cpp
@@ -942,6 +942,17 @@ int FakeVimHandler::Private::readLineCode(QString &cmd)
         return cursorLineInDocument() + 1;
     if (c == '$')
         return linesInDocument();
+    if (c == '\'' && !cmd.isEmpty()) {
+        int mark = m_marks.value(cmd.at(0).unicode());
+        if (!mark) { 
+            showMessage(tr("E20: Mark '%1' not set").arg(cmd.at(0)));
+            return -1;
+        }
+        cmd = cmd.mid(1);
+        QTextCursor tc = m_tc;
+        tc.setPosition(mark);
+        return tc.block().blockNumber() + 1;
+    }
     if (c == '-') {
         int n = readLineCode(cmd);
         return cursorLineInDocument() + 1 - (n == -1 ? 1 : n);