diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp index b9d2af0d69d6934f294966d56dbac30a6b8477da..799e83f42aa63a0505af2a37abab87ebdf0e7bcb 100644 --- a/src/plugins/fakevim/fakevimhandler.cpp +++ b/src/plugins/fakevim/fakevimhandler.cpp @@ -766,7 +766,8 @@ public: void downCaseTransform(TransformationData *td); void replaceText(const Range &range, const QString &str); - void replaceTransform(TransformationData *td); + void replaceByStringTransform(TransformationData *td); + void replaceByCharTransform(TransformationData *td); QString selectText(const Range &range) const; void setCurrentRange(const Range &range); @@ -1686,7 +1687,8 @@ EventResult FakeVimHandler::Private::handleCommandMode(const Input &input) m_rangemode = RangeCharMode; leaveVisualMode(); Range range = currentRange(); - Transformation tr = &FakeVimHandler::Private::replaceTransform; + Transformation tr = + &FakeVimHandler::Private::replaceByCharTransform; transformText(range, tr, input.asChar()); setPosition(range.beginPos); } else if (count() <= rightDist()) { @@ -1694,6 +1696,7 @@ EventResult FakeVimHandler::Private::handleCommandMode(const Input &input) moveRight(count()); replaceText(currentRange(), QString(count(), input.asChar())); moveLeft(); + setTargetColumn(); setDotCommand("%1r" + input.text(), count()); } m_submode = NoSubMode; @@ -4103,10 +4106,16 @@ void FakeVimHandler::Private::invertCaseTransform(TransformationData *td) void FakeVimHandler::Private::replaceText(const Range &range, const QString &str) { - transformText(range, &FakeVimHandler::Private::replaceTransform, str); + Transformation tr = &FakeVimHandler::Private::replaceByStringTransform; + transformText(range, tr, str); +} + +void FakeVimHandler::Private::replaceByStringTransform(TransformationData *td) +{ + td->to = td->extraData.toString(); } -void FakeVimHandler::Private::replaceTransform(TransformationData *td) +void FakeVimHandler::Private::replaceByCharTransform(TransformationData *td) { td->to = QString(td->from.size(), td->extraData.toChar()); }