diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp index 3a76b7d00508260adced29bd28d7c631bb9f319a..563c06354c493803a7b404a1585a9d699ba35939 100755 --- a/src/plugins/fakevim/fakevimhandler.cpp +++ b/src/plugins/fakevim/fakevimhandler.cpp @@ -802,7 +802,7 @@ void FakeVimHandler::Private::finishMovement(const QString &dotCommand) return; } - if (isNoVisualMode()) + if (isVisualMode()) m_marks['>'] = m_tc.position(); if (m_submode == ChangeSubMode) { @@ -1562,6 +1562,12 @@ EventResult FakeVimHandler::Private::handleCommandMode(int key, int unmodified, } else search(lastSearchString(), m_lastSearchForward); recordJump(); + } else if (isVisualMode() && (key == 'o' || key == 'O')) { + int pos = position(); + setPosition(anchor()); + m_anchor = pos; + std::swap(m_marks['<'], m_marks['>']); + updateSelection(); } else if (key == 'o' || key == 'O') { beginEditBlock(); setDotCommand("%1o", count());