diff --git a/src/plugins/fakevim/fakevimplugin.cpp b/src/plugins/fakevim/fakevimplugin.cpp
index f377d465391c38735504265684ed8028ae40fae8..40c0893dbd9e908a2bcd78d59fbb4efb166ce839 100644
--- a/src/plugins/fakevim/fakevimplugin.cpp
+++ b/src/plugins/fakevim/fakevimplugin.cpp
@@ -945,7 +945,7 @@ void FakeVimPluginPrivate::handleExCommand(bool *handled, const ExCommand &cmd)
     QTC_ASSERT(editorManager(), return);
 
     *handled = true;
-    if (cmd.matches("w", "write")) {
+    if (cmd.matches("w", "write") || cmd.cmd == "wq") {
         // :w[rite]
         Core::IEditor *editor = m_editorToHandler.key(handler);
         const QString fileName = handler->currentFileName();
@@ -962,6 +962,8 @@ void FakeVimPluginPrivate::handleExCommand(bool *handled, const ExCommand &cmd)
             handler->showBlackMessage(FakeVimHandler::tr("\"%1\" %2 %3L, %4C written")
                 .arg(fileName).arg(" ")
                 .arg(ba.count('\n')).arg(ba.size()));
+            if (cmd.cmd == "wq")
+                delayedQuitRequested(cmd.hasBang, m_editorToHandler.key(handler));
         } else {
             handler->showRedMessage(tr("File not saved"));
         }