Tengo un archivo con un montón de líneas. He grabado una macro que realiza una operación en una sola línea. Quiero repetir esa macro en todas las líneas restantes en el archivo. ¿Hay una manera rápida de hacer esto?
Intenté Ctrl + Q, resalté un conjunto de líneas y presioné @@, pero eso no pareció funcionar.
vim
vim-macros
Jordan Parmer
fuente
fuente
Respuestas:
Use el comando normal en modo Ex para ejecutar la macro en varias / todas las líneas:
Ejecute la macro almacenada en el registro a en las líneas 5 a 10.
Ejecute la macro almacenada en el registro a en las líneas 5 hasta el final del archivo.
Ejecute la macro almacenada en el registro a en todas las líneas.
Ejecute el almacén de macros en el registro a en todas las líneas que coincidan con el patrón .
Para ejecutar la macro en líneas seleccionadas visualmente, presione V y j o k hasta que se seleccione la región deseada. Luego escriba
:norm! @a
y observe que se muestra la siguiente línea de entrada.Enter : ayuda normal en vim para leer más.
fuente
:norm! @a
:
después de resaltar las líneas, la línea de entrada Ex leerá:'<,'>
en su lugar y luego agregará el resto de lo que Kevin sugirió. Esto hará que el último comando lee::'<,'>norm! @a
.!
Evita la reasignación de claves por parte del usuario. Es posible que no lo necesite, pero una respuesta que funcione para todos lo requiere.Use global para ejecutar la macro 'a' en todas las líneas que contienen 'patrón'
Para obtener ayuda, consulte:
:help global
.fuente
También puedes hacer esto:
En modo normal:
Por ejemplo:
Aplica la macro en el registro q a las siguientes 1000 líneas.
fuente
:%norm! @a
yvGG :norm! @a
j
comando para ir a la siguiente línea; de lo contrario, intentará aplicarla a la misma línea.También hay un complemento llamado RangeMacro, ¡hace exactamente lo que quieres! Para todos los que no pueden adivinar por el nombre, lo que hace: repite una macro grabada para cada línea en un rango dado, sin importar si es por selección visual o por: 40,50 /: +10
Ver http://www.vim.org/scripts/script.php?script_id=3271
fuente