diff --git a/src/plugins/fakevim/fakevim_test.cpp b/src/plugins/fakevim/fakevim_test.cpp index 3a5010abc29..6fcd7d97e22 100644 --- a/src/plugins/fakevim/fakevim_test.cpp +++ b/src/plugins/fakevim/fakevim_test.cpp @@ -1306,6 +1306,13 @@ void FakeVimPlugin::test_map() KEYS("", "abc" N "def" X "xxx" N "yyy" N "ghi"); data.doCommand("unmap X"); + /* QTCREATORBUG-7913 */ + data.setText(""); + data.doCommand("noremap l k|noremap k j|noremap j h"); + KEYS("ikkk", "kk" X "k"); + KEYS("rj", "kk" X "j"); + data.doCommand("unmap l k|unmap k j|unmap j h"); + NOT_IMPLEMENTED // data.setText("abc def"); diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp index 0acb12c5bb2..bcec9e33b8c 100644 --- a/src/plugins/fakevim/fakevimhandler.cpp +++ b/src/plugins/fakevim/fakevimhandler.cpp @@ -2675,7 +2675,7 @@ EventResult FakeVimHandler::Private::handleCommandMode(const Input &input) endEditBlock(); } else { replaceText(range, QString(count(), input.asChar())); - moveLeft(); + moveRight(count() - 1); } setTargetColumn(); setDotCommand("%1r" + input.text(), count()); @@ -5798,7 +5798,9 @@ void FakeVimHandler::Private::endEditBlock() char FakeVimHandler::Private::currentModeCode() const { - if (m_mode == ExMode) + if (m_submode != NoSubMode) + return ' '; + else if (m_mode == ExMode) return 'c'; else if (isVisualMode()) return 'v';