En Vim, con .
, puedo repetir el último comando del modo normal; Por ejemplo:
dd.
elimina una línea dos veces.
Pero si escribo
5j.
el cursor no se mueve 10 líneas hacia abajo. ¿Cómo repito el último comando del modo normal, especialmente un movimiento?
Respuesta1
es factible incluso en vanilla vim, pero la aplicabilidad depende de su caso de uso, es decir. con qué frecuencia necesitarás repetirlo, ya que se requieren algunas pulsaciones de teclas más para que sea repetible.
Opción 1: convertirlo en una operación en modo comando
Usando bajar 5 líneas como ejemplo, puedes hacer:
- enter
:norm 5j
, moverá el cursor hacia abajo 5 líneas - utilizar
@:
para repetir el movimiento
:norm
significa normal, cualquier cadena siguiente se considera como pulsaciones de teclas en modo normal
Opción 2: usar macro
qa
(almacene la macro en el registroa
, puede elegir su propio registro comoqb
,qc
)5j
q
(terminar de grabar la macro)@a
para repetir su operación grabada (reemplacea
con el nombre de registro que eligió, por ejemplo,@b
,@c
)
macro requiere más poder espiritual para configurarse, pero es más repetible en el sentido de que puede almacenar múltiples operaciones en diferentes registros sin que las operaciones más recientes lo anulen.
Respuesta2
vim
Desafortunadamente no hace esto. Lo mejor que puedes hacer es instalar elrepmo.vimcomplemento, que repite los comandos de movimiento que tienen un conteo.
Respuesta3
Puedes repetir los cambios con .
. Los movimientos se pueden repetir con el ;
comando. Este comando parece ser nuevo y hace algo similar al script repmo.vim mencionado en otras respuestas.
Por ejemplo, para pasar al segundo siguiente c
, presione 2fc
. Luego, para hacerlo de nuevo, simplemente escriba ;
.
Respuesta4
Puede seleccionar las líneas que desea cambiar y ejecutar el último comando de punto normal
v5j .............. visual select next 5 lines
:'<,'>norm! . normal mode execute over selection last command '.'