¿Cómo puedo grabar una macro anidada?

Pregunta:

Quiero grabar una macro dentro de una macro, así:

qa
    [ first macro ... ]
    qb
        [ second macro ... ]
    q
    [ some more stuff, involving @b ... ]
q

Sin embargo, la segunda q se interpreta como una solicitud para detener la primera macro, y el resto se interpreta como comandos.

¿Hay alguna forma de comenzar a grabar una segunda macro dentro de una macro?

Si no es así, ¿hay alguna otra forma de lograr el efecto deseado de repetir una determinada secuencia de pulsaciones de teclas, mientras ya está dentro de una macro?

Respuesta:

AFAIK, no se pueden grabar dos macros por qx...q en una sola toma. Para su requerimiento, debe crear la macro b por qb....q , luego qa...@bq .

Si no quiere "grabar" b , puede let @b='whatever' entonces @b reproducirá la macro. Por ejemplo, let @b='ggdG' defina una macro b para eliminar todo el contenido de su búfer actual sin "grabar".

Existe un truco de definición de macros, que puede no ser relevante para su pregunta. Es una macro recursiva, no una macro anidada. Es decir, puedes hacer:

qa..whatever..@aq

esto reproducirá de forma recursiva la macro a . A veces es útil, cuando no sabemos cuántas veces queremos reproducir la macro. Porque cuando ocurre un error, la reproducción de la macro se detendrá automáticamente. Guarda 999@a por ejemplo.

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım