key-bindings – Cómo repetir un mapeo manteniendo presionada la tecla

Pregunta:

Tengo en mi .vimrc algunas asignaciones simples para cambiar el tamaño de las ventanas divididas fácilmente:

noremap <Leader><UP>    <C-w>+
noremap <Leader><DOWN>  <C-w>-

Eso funciona bastante bien, pero, por ejemplo, cuando quiero cambiar el tamaño de la ventana de 10 líneas, tengo que presionar y soltar Líder + ARRIBA 10 veces.

¿Cómo puedo repetir este mapeo mientras se presionan las teclas? Lo que quiero es que cuando presione Líder + ARRIBA, el mapeo se aplicará una vez, luego, después de un corto período de tiempo, se aplicará una vez más y así sucesivamente mientras mantengo presionadas las teclas.

Nota: Sé que es posible prefijar <Cw>+ con un recuento y podría codificarlo en el mapeo o simplemente ingresar un recuento antes de usar el mapeo, pero no es así como quiero hacerlo.

Note2: También sé que un mapeo popular para cambiar el tamaño de las ventanas es usar las teclas + y - que son más fáciles de presionar varias veces, pero no quiero usar esas teclas para hacerlo tampoco.

Respuesta:

Podrías intentar entrar en un submodo … ¡Vim! Para su caso, algo como esto:

call submode#enter_with('grow/shrink', 'n', '', '<leader><up>', '<C-w>+')
call submode#enter_with('grow/shrink', 'n', '', '<leader><down>', '<C-w>-')
call submode#map('grow/shrink', 'n', '', '<down>', '<C-w>-')
call submode#map('grow/shrink', 'n', '', '<up>', '<C-w>+')

Esto significa que ingresa al submodo con Leader-Up o Leader-Down (que también aumentará / encogerá la ventana una vez) y luego, solo tendrá que presionar Up o Down para hacer crecer / encoger la ventana, hasta que salga de la submodo.

Consulte también la ayuda, para problemas de tiempo de espera, pero, para deshabilitarlo:

"disable submode timeouts:
let g:submode_timeout = 0

… lo que significa que permanecerá en ese submodo indefinidamente, hasta que presione una tecla que no sea Up o Down , o hasta que presione Esc .

Y, el siguiente consejo útil que recomendaría:

" don't consume submode-leaving key
let g:submode_keep_leaving_key = 1

… que le permite pasar directamente a sus próximos comandos, al presionar una tecla diferente. Por ejemplo, presionar : dejará el submodo y abrirá la línea de comando.

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım