Guardar macros vim

166

¿Alguien sabe cómo guardar / reutilizar correctamente las macros grabadas dentro de un editor vim?

jnadro52
fuente

Respuestas:

217

Use qseguido de una letra para grabar una macro. Esto solo entra en uno de los registros de copiar / pegar para que pueda pegarlo normalmente con los comandos "xpo "xPen modo normal.

Para guardarlo, abra .vimrc y pegue el contenido, luego el registro estará cerca la próxima vez que inicie vim.
El formato es algo como:

let @q = 'macro contents'

Sin embargo, tenga cuidado con las citas. Tendrían que escapar adecuadamente.

Entonces, para guardar una macro, puede hacer:

  • Desde el modo normal: qq
  • ingrese cualquier comando
  • Desde el modo normal: q
  • abrir .vimrc
  • "qppara insertar la macro en tu let @q = '...'línea
Dan Olson
fuente
3
Además, si necesita insertar caracteres especiales (como escape, en mi caso), use CTRL-V <ESC>en modo de inserción para insertar el carácter correcto. Un literal <ESC>no funciona
adam_0
55
"Sin embargo, tenga en cuenta que el método anterior que utiliza: let no funcionará como se espera para las macros que realice que terminen en un carácter <CR> o <NL> (retorno de carro o nueva línea)". vim.wikia.com/wiki/Macros#Saving_a_macro
Paolo
2
¿Se requieren las comillas (alrededor del contenido de la macro)?
user2472071
15
Ctrl+r Ctrl+r registerNamelas entradas registran contenido sin interpretarlas, mejor que "qp. +1 para el método in-vim, sin embargo.
LAFK dice Reinstate a Monica
@ adam_0 ¿Podría dar más detalles sobre esto? Quizás, incluir un ejemplo? No puedo entender cómo incrustar caracteres especiales, es decir, esc. He intentado cada combinación de ingresar un escape en vano. El "código clave" termina arruinando la macro y se imprime toda la secuencia.
GH05T
21

Para una solución más robusta, puede consultar Marvim .

Le permite guardar una macro en un espacio de nombres específico (o usar el tipo de archivo como un espacio de nombres predeterminado) y luego puede buscar sus macros guardadas y cargarlas en un registro listo para usar.

Si reutiliza muchas macros, esto es bastante útil.

aleatorio
fuente
66
Solo quiero secundar esto y decir lo fácil que es configurar marvim: copie un solo archivo en su directorio / plugin, luego use F3 para guardar una macro y F2 para ejecutar.
Raine Revere
18

Escriba sus macros dentro de su ~ / .vimrc, para definir una macro lanzada por CTRL + O por ejemplo, agregue la siguiente línea a su ~ / .vimrc:

map <C-O> MACROTEXT

cuando graba una macro escribiendo qa, puede recuperar su macro texto escribiendo"ap

Raoul Supercopter
fuente
El uso de "ap o equivalente no funcionó, pero puede obtener la misma información: reg
DShook
"ap se referiría a una macro grabada en el aregistro
Tyler Fowle
11

El comando :mkexrc(o :mkvimrc) se puede usar para guardar toda la configuración actual :mapy :seten un archivo. Ver :help mkexrcpara más detalles.

Matthew Slattery
fuente
4

Puedes hacer esto en tu ~/.vimrc

:let @a="iHello World!\<CR>bye\<Esc>"

NOTA: Debe usar comillas dobles para poder usar teclas especiales como en \<this silly example>.

SergioAraujo
fuente