Как я могу заблокировать движение вверх / вниз несколькими нажатиями клавиш j, k? - PullRequest
0 голосов
/ 14 сентября 2018

Я научился двигаться с помощью hjkl, блокируя клавиши со стрелками.

Я хотел бы сделать что-то похожее на движение вверх / вниз с помощью jjjjjj / kkkkk.Например, всякий раз, когда я нажимаю j 4 раза подряд с небольшими задержками, он возвращается к исходному положению, поэтому мне приходится думать о том, как умнее переместиться в нужное место.

Ответы [ 2 ]

0 голосов
/ 14 сентября 2018

Я не фанат технических решений этой проблемы (я бы скорее критически размышлял о том, как я иногда набираю текст), но это можно сделать, сохранив последующие нажатия клавиш в массиве, и жаловаться, если размер становится слишком большим :

let g:pos = []
let g:keys = []
function! RecordKey( key )
    if v:count || get(g:keys, 0, '') != a:key
        " Used [count], or different key; start over.
        let g:keys = [a:key]
        let g:pos = getpos('.')
        echo
        return 1
    endif

    call add(g:keys, a:key)
    if len(g:keys) > 4
        " Too many identical movements (without count).
        let g:keys = [a:key]
        call setpos('.', g:pos)

        echohl ErrorMsg
        echomsg 'Try again'
        echohl None

        return 0
    endif

    echo
    return 1
endfunction

" Reset counter after a delay in movement.
autocmd CursorHold * let g:keys = []

nnoremap <silent> j :<C-u>if RecordKey('j')<Bar>execute 'normal!' (v:count ? v:count : '') . 'j'<Bar>endif<CR>
nnoremap <silent> k :<C-u>if RecordKey('k')<Bar>execute 'normal!' (v:count ? v:count : '') . 'k'<Bar>endif<CR>
" Add more movements as you wish.

(пробуя это, меня это уже раздражает: -)

0 голосов
/ 14 сентября 2018

Я бы предложил следующие сопоставления:

nnoremap jjjj j
nnoremap kkkk k

Это сделает быстрое движение вверх и вниз очень громоздким. К сожалению, он также запрещает нормальному «j» выполнять очень быстро, так как Vim будет ждать, чтобы узнать, хотите ли вы добавить что-нибудь еще после первого нажатия клавиши для завершения привязки. Это можно обойти, нажав впоследствии другую клавишу (например, переключение в режим вставки с помощью i / I / a / A или тому подобное).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...