diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp
index 52bd4ae3eb4a322090db96e17fd6122f2cc15230..038283f3a010f27e15e101def0dc678a6359de10 100644
--- a/src/plugins/fakevim/fakevimhandler.cpp
+++ b/src/plugins/fakevim/fakevimhandler.cpp
@@ -1078,8 +1078,13 @@ EventResult FakeVimHandler::Private::handleCommandMode(int key, int unmodified,
         m_moveType = MoveInclusive;
         moveToWordBoundary(true, true);
         finishMovement();
-    } else if (key == 'f' || key == 'F') {
+    } else if (key == 'f') {
         m_subsubmode = FtSubSubMode;
+        m_moveType = MoveInclusive;
+        m_subsubdata = key;
+    } else if (key == 'F') {
+        m_subsubmode = FtSubSubMode;
+        m_moveType = MoveExclusive;
         m_subsubdata = key;
     } else if (key == 'g') {
         if (m_gflag) {
@@ -1269,7 +1274,12 @@ EventResult FakeVimHandler::Private::handleCommandMode(int key, int unmodified,
         m_opcount.clear();
         m_mvcount.clear();
         enterInsertMode();
-    } else if (key == 't' || key == 'T') {
+    } else if (key == 't') {
+        m_moveType = MoveInclusive;
+        m_subsubmode = FtSubSubMode;
+        m_subsubdata = key;
+    } else if (key == 'T') {
+        m_moveType = MoveExclusive;
         m_subsubmode = FtSubSubMode;
         m_subsubdata = key;
     } else if (key == 'u') {
@@ -1987,11 +1997,6 @@ void FakeVimHandler::Private::handleFfTt(int key)
                 --pos;
             else if (m_subsubdata == 'T')
                 ++pos;
-            // FIXME: strange correction...
-            if (m_submode == DeleteSubMode && m_subsubdata == 'f')
-                ++pos;
-            if (m_submode == DeleteSubMode && m_subsubdata == 't')
-                ++pos;
 
             if (forward)
                 m_tc.movePosition(Right, KeepAnchor, pos - m_tc.position());