diff --git a/src/plugins/fakevim/fakevim_test.cpp b/src/plugins/fakevim/fakevim_test.cpp index cc7e7fc4059..6e724feabc9 100644 --- a/src/plugins/fakevim/fakevim_test.cpp +++ b/src/plugins/fakevim/fakevim_test.cpp @@ -1239,6 +1239,10 @@ void FakeVimPlugin::test_vim_copy_paste() KEYS("Vjy", X "abc" N "def"); data.setText("ab" X "c" N "def"); KEYS("jhhy", X "abc" N "def"); + data.setText("ab" X "c" N "def"); + KEYS("yj", "ab" X "c" N "def"); + data.setText("abc" N "de" X "f"); + KEYS("yk", "ab" X "c" N "def"); } void FakeVimPlugin::test_vim_undo_redo() diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp index ccf489d8f8f..beea46ff5b7 100644 --- a/src/plugins/fakevim/fakevimhandler.cpp +++ b/src/plugins/fakevim/fakevimhandler.cpp @@ -2620,8 +2620,12 @@ void FakeVimHandler::Private::finishMovement(const QString &dotCommandMovement) setPosition(qMin(pos1, pos2) + col); } else { setPosition(qMin(position(), anchor())); - if (m_rangemode == RangeLineMode) - moveToStartOfLine(); + if (m_rangemode == RangeLineMode) { + if (isVisualMode()) + moveToStartOfLine(); + else + setTargetColumn(); + } } leaveVisualMode(); } else if (m_submode == InvertCaseSubMode