1

Я хочу центрировать вид после того, как переместился вверх / вниз на несколько строк (например, 7j), но не тогда, когда я двигаюсь только один раз (например, j но мне плевать на 1j). Вот что у меня есть:

:noremap j jzz

Как я могу заставить эту работу работать, только когда я соединяю ключ с номером?

1 ответ1

1

Вы можете сделать это следующим образом:

function! s:MoveAndCenter(motion)
    return a:motion . (v:count > 1 ? 'zz' : '')
endfunction

noremap <silent> <expr> j <sid>MoveAndCenter('j')
noremap <silent> <expr> k <sid>MoveAndCenter('k')

Это говорит Vim запускать выражение каждый раз при нажатии j или k и использовать возвращаемую строку из этого выражения в качестве команды нормального режима для запуска. Причина, по которой мы не добавляем счетчик к результату, заключается в том, что Vim автоматически добавляет его (фактически, это поведение нельзя предотвратить).

Увидеть:

:help :map-expr
:help v:count

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .