diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp
index 985d4db096d9972d238a455fc3bbf25a382843ec..b42c4d011e1357b8edbe72196fbc53885d41356a 100644
--- a/src/plugins/fakevim/fakevimhandler.cpp
+++ b/src/plugins/fakevim/fakevimhandler.cpp
@@ -1512,6 +1512,9 @@ EventResult FakeVimHandler::Private::handleInsertMode(int key, int,
             if (leftText.simplified().isEmpty())
                 indentRegion(text.at(0));
         }
+        
+        if (text.at(0) == '.' || text.at(0) == '>')
+            emit q->completionRequested();
     } else {
         return EventUnhandled;
     }
diff --git a/src/plugins/fakevim/fakevimhandler.h b/src/plugins/fakevim/fakevimhandler.h
index d7d978c9d8a90b5c7824f5ecaf79b222bb3d7660..7b5b183cf341af61ddecee3fb43caeb5d98bdfc8 100644
--- a/src/plugins/fakevim/fakevimhandler.h
+++ b/src/plugins/fakevim/fakevimhandler.h
@@ -77,6 +77,7 @@ signals:
         const QString &fileName, const QString &contents);
     void moveToMatchingParenthesis(bool *moved, bool *forward, QTextCursor *cursor);
     void indentRegion(int *amount, int beginLine, int endLine, QChar typedChar);
+    void completionRequested();
 
 private:
     bool eventFilter(QObject *ob, QEvent *ev);
diff --git a/src/plugins/fakevim/fakevimplugin.cpp b/src/plugins/fakevim/fakevimplugin.cpp
index ee632a1acba1ca83cc1f80359d9256cf1a984aad..8ece7de87249704273db4969c320fb9dc9780d1f 100644
--- a/src/plugins/fakevim/fakevimplugin.cpp
+++ b/src/plugins/fakevim/fakevimplugin.cpp
@@ -116,6 +116,7 @@ private slots:
     void installHandlerOnCurrentEditor();
     void installHandler(Core::IEditor *editor);
     void removeHandler();
+    void triggerCompletions();
 
     void showCommandBuffer(const QString &contents);
     void showExtraInformation(const QString &msg);
@@ -208,6 +209,8 @@ void FakeVimPluginPrivate::installHandler(Core::IEditor *editor)
         this, SLOT(moveToMatchingParenthesis(bool*,bool*,QTextCursor*)));
     connect(handler, SIGNAL(indentRegion(int*,int,int,QChar)),
         this, SLOT(indentRegion(int*,int,int,QChar)));
+    connect(handler, SIGNAL(completionRequested()),
+        this, SLOT(triggerCompletions()));
 
     handler->setupWidget();
     handler->setExtraData(editor);
@@ -235,6 +238,15 @@ void FakeVimPluginPrivate::installHandlerOnCurrentEditor()
     installHandler(EditorManager::instance()->currentEditor());
 }
 
+void FakeVimPluginPrivate::triggerCompletions()
+{
+    FakeVimHandler *handler = qobject_cast<FakeVimHandler *>(sender());
+    if (!handler)
+        return;
+    if (BaseTextEditor *bt = qobject_cast<BaseTextEditor *>(handler->widget()))
+        bt->triggerCompletions();
+}
+
 void FakeVimPluginPrivate::writeFile(bool *handled,
     const QString &fileName, const QString &contents)
 {