tutorial salir pegar guardando español copiar comando cambios buscar vim repeat

salir - ¿Cómo repito los últimos n cambios en Vim?



vim linux (3)

Haciendo . repite el último cambio. Haciendo 2. repite el último cambio dos veces.

Pero imagine que quiero repetir el cambio antes del último. ¿Cómo lo hago en Vim?


Basado en la respuesta de Fredrick Phil, aquí hay un ejemplo:

Grabando tu macro

A continuación, se muestra cómo registrar una macro para eliminar todo en una cadena incluida y almacenarla en el registro d . El comando para eliminar una cadena es da" . Entonces, para almacenar este comando en macro register d podemos simplemente hacer esto:

qdda"q

Observe que comienza y termina con una q. El segundo carácter es el registro, en este caso d para eliminar. Pero podríamos haberle dado cualquier letra o número. El resto de los caracteres da" es nuestro comando.

Usando nuestra macro

Ahora que nuestra macro está grabada, podemos invocarla usando el símbolo @ seguido del registro:

@d

Repitiendo el último comando macro

Para utilizar el comando macro invocado más recientemente de nuevo:

@@


Escribí el plugin RepeatLast.vim para abordar este requisito exacto. Proporciona un 5/. vinculación de teclas para repetir los últimos 5 cambios (incluidos los movimientos) y 2/D para soltar / olvidar las 2 últimas acciones.

Funciona al permitir la grabación de macros todo el tiempo , lo que puede no ser deseable para todos. Pero si puedes vivir con eso, funciona en el 99% de los casos de uso.

Última versión: https://github.com/joeytwiddle/RepeatLast.vim (¡por favor, comentarios!)

Advertencias:

Por favor :set ch=2 para que la primera línea de salida no quede oculta por el mensaje de "grabación".

El 1% de las veces no funciona según lo previsto generalmente se debe a:

  1. Dificultades que desencadenan el evento CursorHold lentamente sin perder pulsaciones rápidas repetidas
  2. Grabación indeseable de las teclas [Espacio] y [Intro] cuando el usuario responde a un aviso.

Entrenar su músculo q para registrar macros preventivamente podría ser un mejor enfoque a largo plazo. ;-)


No creas que puedes, mira :help . Sin embargo, lo que puedes hacer es registrar una macro para tus ediciones, tienes muchos registros para elegir de {0-9a-zA-Z"} (mayúsculas para anexar). Luego utiliza, por ejemplo, @u para editar 1, @t para editar 2 y así sucesivamente.

Excelentes consejos sobre cómo grabar desde Best of VIM Tips

" Recording (BEST TIP of ALL) qq # record to q your complex series of commands q # end recording @q to execute @@ to Repeat 5@@ to Repeat 5 times qQ@qq : Make an existing recording q recursive *N* " editing a register/recording "qp :display contents of register q (normal mode) <ctrl-R>q :display contents of register q (insert mode) " you can now see recording contents, edit as required "qdd :put changed contacts back into q @q :execute recording/register q

Echa un vistazo a estos para obtener más consejos para repetir:

:& last substitute :%& last substitute every line :%&gic last substitute every line confirm g% normal mode repeat last substitute g& last substitute on all lines @@ last recording @: last command-mode command :!! last :! command :~ last substitute :help repeating