diff --git a/src/plugins/fakevim/fakevimactions.cpp b/src/plugins/fakevim/fakevimactions.cpp
index 70480646392e043e79bc3250136d306ca3090743..df76b88689b5acfb2aecbd8a6d99a1e7362fb14b 100644
--- a/src/plugins/fakevim/fakevimactions.cpp
+++ b/src/plugins/fakevim/fakevimactions.cpp
@@ -98,6 +98,11 @@ SavedAction *FakeVimSettings::item(int code)
     return m_items.value(code, 0);
 }
 
+SavedAction *FakeVimSettings::item(const QString &name)
+{
+    return m_items.value(m_nameToCode.value(name, -1), 0);
+}
+
 FakeVimSettings *theFakeVimSettings()
 {
     static FakeVimSettings *instance = 0;
diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp
index eeace3b5505a506a89ec6cb18f27abab5cf0a159..8dfc9ec9224eeb8dbfa57641225b53d6a64b72e4 100644
--- a/src/plugins/fakevim/fakevimhandler.cpp
+++ b/src/plugins/fakevim/fakevimhandler.cpp
@@ -1794,33 +1794,33 @@ void FakeVimHandler::Private::handleExCommand(const QString &cmd0)
         updateMiniBuffer();
     } else if (reSet.indexIn(cmd) != -1) { // :set
         QString arg = reSet.cap(2);
+        SavedAction *act = theFakeVimSettings()->item(arg);
         if (arg.isEmpty()) {
             theFakeVimSetting(SettingsDialog)->trigger(QVariant());
-/*
-        } else if (theFakeVimSettings()->.contains(arg)) {
-            // boolean config to be switched on or non-boolean to show
-            QString oldValue = m_config.value(arg);
+        } else if (act && act->value().type() == QVariant::Bool) {
+            // boolean config to be switched on
+            bool oldValue = act->value().toBool();
             if (oldValue == false)
-                m_config[arg] = true;
+                act->setValue(true);
             else if (oldValue == true)
-                ; // nothing to do
-            else
-                showBlackMessage(arg + '=' + oldValue);
-        } else if (arg.startsWith("no") && m_config.contains(arg.mid(2))) {
+                {} // nothing to do
+        } else if (act) {
+            // non-boolean to show
+            showBlackMessage(arg + '=' + act->value().toString());
+        } else if (arg.startsWith("no")
+                && (act = theFakeVimSettings()->item(arg.mid(2)))) {
             // boolean config to be switched off
-            QString key = arg.mid(2);
-            QString oldValue = m_config.value(key);
+            bool oldValue = act->value().toBool();
             if (oldValue == true)
-                m_config[key] = false;
+                act->setValue(false);
             else if (oldValue == false)
-                ; // nothing to do
-            else
-                showBlackMessage(key + '=' + oldValue);
+                {} // nothing to do
         } else if (arg.contains('=')) {
             // non-boolean config to set
             int p = arg.indexOf('=');
-            m_config[arg.left(p)] = arg.mid(p + 1);
-*/
+            act = theFakeVimSettings()->item(arg.left(p));
+            if (act)
+                act->setValue(arg.mid(p + 1));
         } else {
             showRedMessage(tr("E512: Unknown option: ") + arg);
         }