Buscar..
Grabando una macro
Una forma de crear una macro es grabarla .
Comience a grabar una macro y guárdela en un registro (en este ejemplo, usaremos a
, pero puede ser cualquier registro al que normalmente pueda copiar texto):
qa
Luego, ejecute los comandos que desea grabar en la macro (aquí, rodearemos el contenido de una línea con etiquetas <li>
):
I<li><ESC>A</li>
Cuando hayamos terminado con los comandos que queremos grabar en la macro, detenga la grabación:
q
Ahora, cada vez que deseamos ejecutar la secuencia grabada de comandos almacenados en a
, use:
@a
y vim repetirá la secuencia grabada.
La próxima vez que desee repetir la última macro que se usó, puede escribir doble @
:
@@
Y como un bono extra, es bueno recordar que si coloca un número antes de un comando, lo repetirá muchas veces. Por lo tanto, se repite la macro guardada en el registro a
20 veces con:
20@a
Edición de una macro vim
Algunas veces cometerá un error con una macro larga, pero preferiría editarla en lugar de regrabarla por completo. Puedes hacerlo usando el siguiente proceso:
Coloque la macro en una línea vacía con
"<register>p
.Si su macro está guardada en el registro
a
, el comando es"ap
.Edite la macro según sea necesario.
Mueva la macro al registro correcto moviendo el cursor al principio de la línea y usando
"<register>y$
.Puedes reutilizar el registro original o usar otro. Si desea utilizar el registro
b
, el comando es"by$
. O mediante"<register>d$
(elimina la línea no utilizada)
Macros recursivas
Las macros de Vim también pueden ser recursivas. Esto es útil para cuando necesita actuar en cada línea (u otro objeto de texto) hasta el final del archivo.
Para grabar una macro recursiva, comience con un registro vacío. (Un registro se puede vaciar usando q<register>q
.)
Elija un punto de inicio consistente en cada línea para comenzar y terminar.
Antes de finalizar la grabación, invoca la macro como el último comando. (Esta es la razón por la que el registro debe estar vacío: para que no haga nada, ya que la macro aún no existe).
Ejemplo, dado el texto:
line 1
line 2
line 3
foo bar
more random text
.
.
.
line ???
En el modo normal, con el cursor en la primera línea y un registro vacío a
, se podría grabar esta macro:
qaI"<Esc>A"<Esc>j@aq
Luego, con una sola invocación de @a
, todas las líneas del archivo estarán ahora entre comillas dobles.
¿Qué es una macro?
Una macro es una serie de pulsaciones de teclado destinadas a ser "reproducidas" por Vim sin demora. Las macros pueden almacenarse en registros o variables, vincularse a teclas o ejecutarse en la línea de comandos.
Aquí hay una macro simple que pone en mayúscula la tercera word
en una línea:
0wwgUiw
Esa macro podría grabarse en el registro q
:
qq start recording into register q
0wwgUiw
q stop recording
o guardado directamente en el registro q
:
:let @q = '0wwgUiw'
para ser reproducido con:
@q
Pero también se puede escribir directamente en la línea de comandos:
:normal 0wwgUiw
para reproducción instantánea a través del :normal
comando :normal
.
O poner en una variable:
:let myvar = '0wwgUiw'
para ser reproducido con:
@=myvar
O guardado como un mapeo:
nnoremap <key> 0wwgUiw
para reproducir presionando <key>
.
Si desea almacenar una macro para su reutilización posterior, puede escribir en el modo de inserción:
<C-r>q
Esto inserta la macro en el registro q
(en este ejemplo: 0wwgUiw
). Puede usar esta salida, por ejemplo, para definir la macro en su vimrc
:
let @q='0wwgUiw'
Al hacerlo, el registro q
se inicializa con esta macro cada vez que inicia vim.
Grabar y reproducir la acción (macros)
Con el comando q
podríamos simplificar mucho trabajo tedioso en vim.
Ejemplo 1. Generar secuencia de matriz (1 a 20).
PASO 1. presione i
para ingresar al modo de inserción, ingrese 1
1
PASO 2. Registre la siguiente acción: "agregue el último número a la siguiente línea e incremente el número"
- escriba
esc
para salir del modo de entrada - escriba
qa
para ingresar al modo de grabación, usando el búfera
- escriba
yy
yp
para copiar la línea actual y péguela como la siguiente línea - escriba
ctrl
+a
para incrementar el número - Escribe
q
nuevo para terminar el registro
1
2
PASO 3. Repetir la acción 18 veces.
escriba 18@a
para reproducir la acción 3 y la acción 4 en el paso 2.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20