18 Macros de Teclado

En este capítulo describimos cómo grabar una secuencia de comandos de edición para poder repetirla cómodamente más tarde.

Una macro de teclado es un comando definido por un Usuario de Emacs para sustituir a otra secuencia de teclas. Por ejemplo, si descubre que está a punto de teclear Ctrl-n Alt-d Ctrl-d (C-n M-d C-d) cuarenta veces, puede acelerar su trabajo definiendo una macro de teclado para hacer C-n M-d C-d, y luego ejecutarla 39 veces más.

Una macro de teclado se define ejecutando y registrando los comandos que constituyen su definición. Dicho de otro modo, al definir una macro de teclado, la definición se ejecuta por primera vez. De este modo, puede ver los efectos de sus comandos, para no tener que calcularlos mentalmente. Cuando cierra la definición, la macro de teclado está definida y también ha sido, en efecto, ejecutada una vez. A continuación, puede volver a hacer todo de nuevo invocando la macro.

Las macros de teclado difieren de los comandos ordinarios de Emacs en que están escritas en el lenguaje de comandos de Emacs en lugar de en Lisp. Esto hace que sea más fácil para el principiante escribirlas, y las hace más convenientes como hacks temporales. Sin embargo, el lenguaje de comandos de Emacs no es lo suficientemente potente como lenguaje de programación como para ser útil para escribir algo inteligente o general. Para tales cosas, debe utilizarse Lisp.

18.1 Uso básico

F3 (F3)

Empieza a definir una macro de teclado (kmacro-start-macro-or-insert-counter).

F4 (F4)

Si se está definiendo una macro de teclado, finaliza la definición; en caso contrario, ejecuta la macro de teclado más reciente (kmacro-end-or-call-macro).

Ctrl-u F3 (C-u F3)

Reejecuta la última macro de teclado y añade las teclas a su definición.

Ctrl-u Ctrl-u F3 (C-u C-u F3)

Añade teclas a la última macro de teclado sin volver a ejecutarla.

Ctrl-x Ctrl-k r (C-x C-k r)

Ejecuta la última macro de teclado en cada línea que empieza en la región (apply-macro-to-region-lines).

Ctrl-x ( (C-x ()

Empieza a definir una macro de teclado (estilo antiguo) (kmacro-start-macro); con un argumento prefijo, añade teclas a la última macro.

Ctrl-x ) (C-x ))

Finaliza una definición de macro (estilo antiguo) (kmacro-end-macro); el argumento prefijo sirve como recuento de repeticiones para ejecutar la macro.

Ctrl-x e (C-x e)

Ejecuta la macro de teclado definida más recientemente (kmacro-end-and-call-macro); el argumento prefijo sirve como recuento de repeticiones.

Para empezar a definir una macro de teclado, escriba F3 (F3). A partir de ese momento, sus teclas seguirán ejecutándose, pero también pasarán a formar parte de la definición de la macro. Def aparece en la línea de modo para recordarle lo que está pasando. Cuando haya terminado, escriba F4 (F4, kmacro-end-or-call-macro) para finalizar la definición. Por ejemplo,

F3 M-f foo F4

define una macro para avanzar una palabra y luego insertar foo. Observe que F3 y F4 no forman parte de la macro.

Después de definir la macro, puede llamarla con F4. Para el ejemplo anterior, esto tiene el mismo efecto que escribir Alt-f foo (M-f foo) de nuevo. (Tenga en cuenta las dos funciones del comando F4 finaliza la macro si está en proceso de definir una, o llama a la última macro en caso contrario). También puede suministrar a F4 un argumento prefijo numérico n, que significa invocar la macro n veces. Un argumento de cero repite la macro indefinidamente, hasta que obtiene un error o teclee Ctrl-g (C-g) (o, en MS-DOS, C-Break).

El ejemplo anterior demuestra un práctico truco que puede emplear con las macros de teclado: si desea repetir una operación en lugares regularmente espaciados del texto, incluya un comando de movimiento como parte de la macro. En este caso, la repetición de la macro inserta la cadena foo después de cada palabra sucesiva.

Tras finalizar la definición de una macro de teclado, puede añadir más pulsaciones a su definición escribiendo Ctrl-u F3 (C-u F3). Esto equivale a F3 simple seguido de volver a escribir toda la definición hasta el momento. Como consecuencia, vuelve a ejecutar la macro tal y como estaba definida anteriormente. Si cambia la variable kmacro-execute-before-append a nil, la macro existente no se reejecutará antes de anexarla (el valor por defecto es t). También puede añadir al final de la definición de la última macro de teclado sin reejecutarla tecleando Ctrl-u Ctrl-u F3 (C-u C-u F3).

Cuando un comando lee un argumento con el minibúfer, su entrada en el minibúfer pasa a formar parte de la macro junto con el comando. Así, cuando vuelva a ejecutar la macro, el comando obtendrá el mismo argumento que cuando introdujo la macro. Por ejemplo,

F3 C-a C-k C-x b foo RET C-y C-x b RET F4

define una macro que elimina la línea actual, la vuelca en el búfer foo, y luego vuelve al búfer original.

La mayoría de los comandos de teclado funcionan como de costumbre en una definición de macro de teclado, con algunas excepciones. Escribiendo Ctrl-g (C-g, keyboard-quit) se sale de la definición de macro de teclado. Escribir Ctrl-Alt-c (C-M-c, exit-recursive-edit) puede ser poco fiable: funciona como se esperaría si se sale de una edición recursiva que se inició dentro de la macro, pero si se sale de una edición recursiva que se inició antes de invocar la macro de teclado, necesariamente también se sale de la macro de teclado. Los eventos del ratón tampoco son fiables, aunque pueda usarlos en una macro de teclado: cuando la macro reproduce el evento del ratón, usa la posición original del ratón de ese evento, la posición que tenía el ratón mientras estaba definiendo la macro. El resultado de esto puede ser difícil de predecir.

El comando C-x C-k r (apply-macro-to-region-lines) repite la última macro de teclado definida en cada línea que comienza en la región. Hace esto línea por línea, moviendo el punto al principio de la línea y luego ejecutando la macro.

Además de los comandos F3 y F4 descritos anteriormente, Emacs también soporta un conjunto más antiguo de combinaciones de teclas para definir y ejecutar macros de teclado. Para comenzar la definición de una macro, teclee Ctrl-x (C-x, kmacro-start-macro); como con F3, un argumento prefijo añade esta definición a la última macro de teclado. Para finalizar una definición de macro, escriba Ctrl-x (C-x, kmacro-end-macro). Para ejecutar la macro más reciente, escriba Ctrl-x e (C-x e, kmacro-end-and-call-macro). Si teclea Ctrl-x e (C-x e) mientras define una macro, la macro finaliza y se ejecuta inmediatamente. Inmediatamente después de teclear Ctrl-x e, puede teclear e (e) repetidamente para repetir inmediatamente la macro una o más veces. También puede dar a C-x e un argumento de repetición, al igual que F4 (cuando se utiliza para ejecutar una macro).

A C-x ) se le puede dar una cuenta de repetición como argumento. Esto significa repetir la macro justo después de definirla. La propia definición de la macro cuenta como la primera repetición, ya que se ejecuta a medida que se define, por lo que C-u 4 C-x ) ejecuta la macro inmediatamente 3 veces adicionales.

Mientras se ejecuta una macro de teclado de larga duración, a veces puede ser útil activar una nueva visualización (para mostrar hasta dónde hemos llegado). El comando C-x C-k d puede usarse para esto. Como ejemplo no muy útil, C-x (M-f C-x C-k d C-x) creará una macro que volverá a mostrar una vez por iteración cuando la orden sea C-u 42 C-x e.

18.2 El Anillo de Macros de Teclado

Todas las macros de teclado definidas se graban en el anillo de macros de teclado. Sólo hay un anillo de macros de teclado, compartido por todos los búfers.

Ctrl-x Ctrl-k Ctrl-k (C-x C-k C-k)

Ejecuta la macro de teclado que esa en la cabecera del anillo (kmacro-end-or-call-macro-repeat).

Ctrl-x Ctrl k Ctrl-n (C-x C-k C-n)

Gira el anillo de macros del teclado hasta la siguiente macro (definida anteriormente) (kmacro-cycle-ring-next).

Ctrlf-x Ctrl-k Ctrl-p (C-x C-k C-p)

Gira el anillo de macros del teclado a la macro anterior (definida más adelante) (kmacro-cycle-ring-previous).

Todos los comandos que operan en el anillo de macros del teclado usan el mismo prefijo C-x C-k. La mayoría de estos comandos pueden ejecutarse y repetirse inmediatamente uno tras otro sin repetir el prefijo C-x C-k. Por ejemplo,

C-x C-k C-p C-p C-k C-k C-k C-n C-n C-k C-p C-k C-d

girará el anillo de macros del teclado a la segunda macro anterior, ejecutará la macro de cabecera resultante tres veces, girará de nuevo a la macro de cabecera original, la ejecutará una vez, girará a la macro anterior, la ejecutará, y finalmente la borrará del anillo de macros.

El comando C-x C-k C-k (kmacro-end-or-call-macro-repeat) ejecuta la macro de teclado que se encuentra en la cabeza del anillo de macros. Puede repetir la macro inmediatamente escribiendo otra combinación de telcas Ctrl-k (C-k), o puede girar el anillo de macros inmediatamente escribiendo Ctrl-n o Ctrl-p (C-n o C-p).

Cuando se está definiendo una macro de teclado, C-x C-k C-k se comporta como F4 excepto que, inmediatamente después, puede usar la mayoría de las combinaciones de teclas de esta sección sin el prefijo C-x C-k. Por ejemplo, otra C-k volverá a ejecutar la macro.

Los comandos C-x C-k C-n (kmacro-cycle-ring-next) y C-x C-k C-p (kmacro-cycle-ring-previous) rotan el anillo de macros, llevando la macro de teclado siguiente o anterior a la cabeza del anillo de macros. La definición de la nueva macro de cabecera se muestra en el área de eco. Puede continuar rotando el anillo de macros inmediatamente repitiendo sólo C-n y C-p hasta que la macro deseada esté en la cabeza del anillo. Para ejecutar la nueva macro que está en la cabeza de anillo inmediatamente, simplemente teclee Ctrl-k (C-k).

Tenga en cuenta que Emacs trata la cabeza del anillo de macros como la última macro de teclado definida. Por ejemplo, F4 ejecutará esa macro, y C-x C-k n le dará un nombre.

El número máximo de macros almacenadas en el anillo de macros del teclado viene determinado por la variable personalizable kmacro-ring-max.

18.3 El Contador de Macros de Teclado

Cada macro de teclado tiene un contador asociado, que se inicializa a 0 cuando se empieza a definir la macro. Este contador actual permite insertar en el búfer un número que depende del número de veces que se ha llamado a la macro. Normalmente, el contador se incrementa cada vez que se inserta su valor en el búfer.

Además del contador actual, las macros de teclado también mantienen el contador anterior, que registra el valor que tenía el contador actual la última vez que se incrementó o fijó. Tenga en cuenta que al incrementar el contador actual en cero, por ejemplo, con Ctrl-u 0 Ctrl-x Ctrl-k i (C-u 0 C-x C-k C-i), también se registra el valor del contador actual como valor del contador anterior.

F3 (F3)

En una definición de macro de teclado, inserta el valor del contador de la macro de teclado en el búfer (kmacro-start-macro-or-insert-counter).

Ctrl-x Ctrl-k Ctrl-i (C-x C-k C-i)

Inserta el valor del contador de macros del teclado en el búfer (kmacro-insert-counter).

Ctrl-x Ctrl-k Ctrl-c (C-x C-k C-c)

Establece el contador de macros del teclado (kmacro-set-counter).

Ctrl-x Ctrl-k Ctrl-a (C-x C-k C-a)

Añade el prefijo arg al contador de macros del teclado (kmacro-add-counter).

Ctrl-x Ctrl-k Ctrl-f (C-x C-k C-f)

Especifica el formato para insertar el contador de macros de teclado (kmacro-set-format).

Cuando está definiendo una macro de teclado, el comando F3 (kmacro-start-macro-or-insert-counter) inserta el valor actual del contador de la macro de teclado en el búfer, e incrementa el contador en 1. (Si no está definiendo una macro, F3 inicia una definición de macro en su lugar. Véase 18.1 Uso básico). Puede usar un argumento de prefijo numérico para especificar un incremento diferente. Si sólo especifica un prefijo C-u, eso inserta el valor anterior del contador, y no cambia el valor actual.

A modo de ejemplo, vamos a mostrar cómo se puede usar el contador de macros del teclado para construir una lista numerada. Considere la siguiente secuencia de teclas:

F3 C-a F3 . SPC F4

Como parte de esta definición de macro de teclado, la cadena 0. se insertó al principio de la línea actual. Si ahora se desplaza a otro lugar del búfer y teclea F4 para invocar la macro, la cadena 1. se inserta al principio de esa línea. Las invocaciones posteriores insertan 2. , 3. , y así sucesivamente.

El comando C-x C-k C-i (kmacro-insert-counter) hace lo mismo que F3, pero puede usarse fuera de una definición de macro de teclado. Cuando no se está definiendo o ejecutando ninguna macro de teclado, inserta e incrementa el contador de la macro en la cabecera del anillo de macros de teclado.

El comando C-x C-k C-c (kmacro-set-counter) establece el contador actual de la macro en el valor del argumento numérico. Si lo usa dentro de la macro, opera en cada repetición de la macro. Si especifica sólo C-u como prefijo, mientras ejecuta la macro, eso reinicia el contador al valor que tenía al principio de la repetición actual de la macro (deshaciendo cualquier incremento hasta el momento en esta repetición).

El comando C-x C-k C-a (kmacro-add-counter) añade el argumento prefijo al contador de macros actual. Con sólo C-u como argumento, reinicia el contador al último valor insertado por cualquier macro de teclado. (Normalmente, cuando use esto, la última inserción será en la misma macro y será el mismo contador).

El comando C-x C-k C-f (kmacro-set-format) pregunta por el formato a usar al insertar el contador de macros. El formato por defecto es %d, que significa insertar el número en decimal sin ningún relleno. Puede salir con el minibúfer vacío para restablecer el formato por defecto. Puede especificar cualquier cadena de formato que la función format acepte y que tenga sentido con un único argumento entero extra (vea Formato de Cadenas en el Manual de Referencia de Emacs Lisp). No ponga la cadena de formato dentro de comillas dobles cuando la inserte en el minibúfer.

Si usa este comando mientras no se está definiendo o ejecutando ninguna macro de teclado, el nuevo formato afectará a todas las definiciones de macro posteriores. Las macros existentes siguen usando el formato vigente en el momento de su definición. Si establece el formato mientras define una macro de teclado, esto afecta a la macro que se está definiendo a partir de ese momento, pero no afecta a las macros posteriores. La ejecución de la macro utilizará, en cada paso, el formato vigente en ese paso durante su definición. Los cambios en el formato de la macro durante su ejecución, al igual que los cambios correspondientes durante su definición, no afectan a las macros posteriores.

El formato establecido por C-x C-k C-f no afecta a la inserción de números almacenados en registros.

Si se usa un registro como contador, incrementándolo en cada repetición de la macro, se consigue lo mismo que con un contador de macros de teclado. Consulte 14.5 Guardar Números en Registros. Para la mayoría de los propósitos, es más sencillo usar un contador de macros de teclado.

18.4 Ejecutar Macros con Variaciones

En una macro de teclado, puede crear un efecto similar al de query-replace, en el sentido de que la macro le pregunta cada vez si desea realizar un cambio.

Ctrl-x q (C-x q)

Cuando se alcanza este punto durante la ejecución de la macro, pide confirmación (kbd-macro-query).

Mientras define la macro, escriba Ctrl-x q (C-x q) en el punto en el que desea que se produzca la consulta. Durante la definición de la macro, C-x q no hace nada, pero cuando ejecute la macro más tarde, C-x q le preguntará interactivamente si desea continuar.

Las respuestas válidas cuando C-x q pregunta son:

SPACE (o y) (SPC (o y))

Sigue ejecutando la macro de teclado.

DEL (o n) (DEL (o n))

Salta el resto de esta repetición de la macro y empieza inmediatamente con la siguiente repetición.

RETURN (o q) (RET (o q))

Omite el resto de esta repetición y cancela las siguientes.

Ctrl-r (C-r)

Entra en un nivel de edición recursiva, en el que es posible llevar a cabo ediciones que no forman parte de la macro. Al salir de la edición recursiva mediante Ctrl-Alt-c (C-M-c), se le vuelve a preguntar cómo continuar con la macro de teclado. Si en este momento escribe un SPACE (SPC), se ejecutará el resto de la definición de la macro. Depende de Usted dejar el punto y el texto en un estado tal que el resto de la macro haga lo que desea.

Ctrl-u Ctrl-x u (C-u C-x q), que es Ctrl-x q (C-x q) con un argumento prefijo, lleva a cabo una función completamente diferente. Entra en una edición recursiva leyendo la entrada del teclado, tanto cuando la escribe durante la definición de la macro, como cuando se ejecuta desde la macro. Durante la definición, la edición que hace dentro de la edición recursiva no se convierte en parte de la macro. Durante la ejecución de la macro, la edición recursiva le da la oportunidad de hacer alguna edición particular en cada repetición. Véase 46 Niveles de Edición Recursiva.

18.5 Nombrar y Guardar Macros de Teclado

Ctrl-x Ctrl-k n (C-x C-k n)

Da un nombre de comando (durante toda la sesión de Emacs) a la macro de teclado definida más recientemente (kmacro-name-last-macro).

Ctrl-x Ctrl-k b (C-x C-k b)

Vincula la macro de teclado definida más recientemente a una secuencia de teclas (mientras dure la sesión) (kmacro-bind-to-key).

Alt-x insert-kbd-macro (M-x insert-kbd-macro)

Inserta en el búfer la definición de una macro de teclado, como código Lisp.

Si desea guardar una macro de teclado para su posterior uso, puede darle un nombre utilizando C-x C-k n (kmacro-name-last-macro). Esto lee un nombre como argumento usando el minibúfer y define ese nombre para ejecutar la última macro de teclado, en su forma actual. (Si posteriormente añade algo a la definición de esta macro, eso no altera la definición del nombre como macro). El nombre de la macro es un símbolo Lisp, y definirlo de esta forma lo convierte en un nombre de comando válido para llamar con M-x o para enlazar una tecla con keymap-global-set (ver 50.3.1 Mapas de teclas). Si especifica un nombre que tiene una definición anterior que no sea una macro de teclado, se muestra un mensaje de error y no se modifica nada.

También puede vincular la última macro de teclado (en su forma actual) a una tecla, usando C-x C-k b (kmacro-bind-to-key) seguido de la secuencia de teclas que desea vincular. Puede asociar cualquier secuencia de teclas del mapa de teclas global, pero como la mayoría de las secuencias de teclas ya tienen otras asociaciones, debe seleccionar la secuencia de teclas con cuidado. Si intenta vincular una secuencia de teclas con una combinación existente (en cualquier mapa de teclas), este comando le pedirá confirmación antes de reemplazar la combinación existente.

Para evitar problemas causados por la anulación de combinaciones existentes, las secuencias de teclas Ctrl-x Ctrl-k 0 (C-x C-k 0) a Ctrl-x Ctrl-k 9 (C-x C-k 9) y Ctrl-x Ctrl-k A (C-x C-k A) a Ctrl-x Ctrl-x-Ctrl-k Z (C-x C-k Z) están reservadas para sus propias combinaciones de macros de teclado. De hecho, para enlazar con una de estas secuencias de teclas, sólo tiene que escribir el dígito o la letra en lugar de las secuencias de teclas completas. Por ejemplo,

C-x C-k b 4

vinculará la última macro de teclado a la secuencia de teclas Ctrl-x Ctrl-k 4 (C-x C-k 4).

Una vez que una macro tiene un nombre de comando, puede guardar su definición en un archivo. Así podrá usarla en otra sesión de edición. Primero, visite el archivo en el que desea guardar la definición. A continuación, utilice este comando:

M-x insert-kbd-macro RET nombremacro RET

Esto inserta algún código Lisp que, cuando se ejecute más tarde, definirá la misma macro con la misma definición que tiene ahora. (No necesita entender código Lisp para hacer esto, porque insert-kbd-macro escribe el código Lisp por Usted). A continuación, guarde el archivo. Puede cargar el archivo más tarde con load-file (vea 28.8 Bibliotecas de Código Lisp para Emacs). Si el archivo que guarda es su archivo init ~/.emacs (vea 50.4. El Archivo de Inicialización de Emacs) entonces la macro será definida cada vez que ejecute Emacs.

Si le damos un argumento prefijo a insert-kbd-macro, hace código Lisp adicional para registrar las teclas (si las hay) que hemos ligado a nombremacro, de forma que a la macro se le reasignarán las mismas teclas cuando carguemos el archivo.

18.6 Edición de una Macro de Teclado

Ctrl-x Ctrl-k Ctrl-e (C-x C-k C-e)

Edita la última macro de teclado definida (kmacro-edit-macro).

Ctrl-x Ctrl-k e nombre (C-x C-k e nombre RET)

Edita un nombre de macro de teclado previamente definido (edit-kbd-macro).

Ctrl-x Ctrl-k l (C-x C-k l)

Edita las últimas 300 pulsaciones como macro de teclado (kmacro-edit-lossage).

Puede editar la última macro de teclado escribiendo Ctrl-Ctrl-k e (C-x C-k C-e) o Ctrl-x Ctrl-k RETURN (C-x C-k RET, kmacro-edit-macro). Esto formatea la definición de macro en un búfer y entra en un modo principal especializado para editarla. Escriba Ctrl-h m (C-h m) una vez en ese búfer para mostrar los detalles de cómo editar la macro. Cuando termine de editarla, teclee Ctrl-c Ctrl-c (C-c C-c).

Puede editar una macro de teclado con nombre o una macro asociada a una tecla escribiendo Ctrl-x Ctrl-k e (C-x C-k e, edit-kbd-macro). A continuación, escriba la entrada de teclado que usaría para invocar la macro: C-x e o M-x nombre o alguna otra secuencia de teclas.

Puede editar las últimas 300 pulsaciones como una macro escribiendo Ctrl-x Ctrl-k l (C-x C-k l, kmacro-edit-lossage).

18.7 Edición por Pasos de una Macro de Teclado

Puede reproducir y editar interactivamente la última macro de teclado, comando a comando, tecleando Ctrl-x Ctrl-k Ctrl-SPACE (C-x C-k SPC, kmacro-step-edit-macro). A menos que salga de la macro usando q o C-g, la macro editada sustituye a la última macro en el anillo de macros.

Esta función de edición de macros muestra la última macro en el minibúfer junto con el primer (o siguiente) comando a ejecutar, y le pide que realice una acción. Puede introducir ? (?) para obtener un resumen de sus opciones. Estas acciones están disponibles:

  • SPACE e y (SPC e y) ejecutan el comando actual y avanzan al siguiente comando de la macro de teclado.

  • n (n), d (d) y DEL (DEL) omiten y eliminan el comando actual.

  • f (f) omite el comando actual en esta ejecución de la macro de teclado, pero no lo elimina de la macro.

  • TAB (TAB) ejecuta el comando actual, así como todos los comandos similares inmediatamente posteriores al comando actual; por ejemplo, TAB puede usarse para insertar una secuencia de caracteres (correspondiente a una secuencia de comandos de autoinserción).

  • c (c) continúa la ejecución (sin más edición) hasta el final de la macro de teclado. Si la ejecución termina normalmente, la macro editada sustituye a la macro de teclado original.

  • Ctrl-k (C-k) omite y borra el resto de la macro de teclado, termina la edición por pasos y sustituye la macro de teclado original por la macro editada.

  • q (q) y Ctrl-g (C-g) cancela la edición por pasos de la macro de teclado; descartando cualquier cambio realizado en la macro de teclado.

  • i tecla… Ctrl-j (i tecla… C-j) lee y ejecuta una serie de secuencias de teclas (sin incluir la C-j final), y las inserta antes del comando actual en la macro de teclado, sin avanzar sobre el comando actual.

  • I tecla… (I tecla…) lee una secuencia de teclas, la ejecuta y la inserta antes del comando actual en la macro de teclado, sin avanzar sobre el comando actual.

  • r tecla… Ctrl-j (r tecla… C-j) lee y ejecuta una serie de secuencias de teclas (sin incluir la C-j final), y reemplaza el comando actual en la macro de teclado con ellas, avanzando sobre las secuencias de teclas insertadas.

  • R tecla… (R tecla…) lee una secuencia de teclas, la ejecuta y sustituye el comando actual de la macro de teclado por esa secuencia de teclas, avanzando sobre la secuencia de teclas insertada.

  • a tecla… Ctrl-j (a tecla… C-j) ejecuta el comando actual, luego lee y ejecuta una serie de secuencias de teclas (sin incluir la C-j final), y las inserta después del comando actual en la macro de teclado; luego avanza sobre el comando actual y las secuencias de teclas insertadas.

  • A tecla… Ctrl-j (A tecla… C-j) ejecuta el resto de los comandos de la macro de teclado, luego lee y ejecuta una serie de secuencias de teclas (sin incluir la C-j final), y las añade al final de la macro de teclado; a continuación, termina la edición por pasos y sustituye la macro de teclado original por la macro editada.