При объявлении сопоставления с помощью omap
или onoremap
я хотел бы иметь возможность обрабатывать случай, когда движение будет блочным, линейным или стандартным.
Например, давайте рассмотрим следующий блок:
abcd
efgh
ijkl
mnop
Курсор находится на букве f.Предположим, что я определяю карту операторов от K
до :normal! vjl
(переходите к букве k).
onoremap K :normal! vjl<cr>
Интересно, что когда я запускаю dvK
, dK
, d<strong>^V</strong>K
, я получаю соответственно
abcd abcd abcd
el el eh
mnop mnop il
mnop
Но когда я запускаю dVK
, это не сработает, я получаю точно так же, как с dvK
.
Я пытался использовать visualmode()
(отображение определено как@=visualmode()<cr>jl<cr>
, но это не работает. Похоже, что возвращаемое значение этой функции не сразу изменяется при использовании v
, V
или CTRL-V в режиме ожидания оператора.
Кто-нибудьесть подсказка пожалуйста?
спасибо