Esta es una solicitud bastante curiosa ya que no hay un "modo" para grabar una macro. Después de examinar algunos documentos, encontré lo siguiente enusr_10
Empiezas moviéndote al primer carácter de la primera línea. Luego ejecuta los siguientes comandos:
qa Comience a grabar una macro en el registro a .
^ Moverse al comienzo de la línea.
i # include "Insertar la cadena #include" al comienzo de la línea.
$ Moverse al final de la línea.
a "Agregar la comilla doble de caracteres (") al final de la línea.
j Ir a la siguiente línea.
q Detenga la grabación de la macro.
Lo más destacado para mí fue la frase sobre "Comenzar a grabar una macro en el registro a"
Como cada macro se guardará en un registro de forma predeterminada, esperaba que pudiéramos verla en la :reg
lista. ¡Resulta que funciona como un encanto!
Ejemplo:
En modo normal: qaisomething<Esc>
y dentro de :reg
nosotros vemos la entrada!
"a isomething^[
Con ese conocimiento, debería poder "espiar" los registros para confirmar que se está grabando una macro (use un registro con nombre en cada grabación [mapa q
para usar siempre el mismo registro (o algo así)]
Si tiene problemas, hágamelo saber y trataré de ayudarlo (ya que esta funcionalidad también es nueva para mí: D)
editar
Para abordar el problema de un registro que se está utilizando durante el retiro, recomendaría buscar un tipo especial de registro que pueda usar solo para el vimL
que está escribiendo (nunca se activará ningún registro en el registro ( "ay
))
Aquí hay un poco de información de :help registers
los registros disponibles
Hay diez tipos de registros: registros E354
El registro sin nombre ""
10 registros numerados "0 a" 9
El pequeño registro de eliminación "-
26 registros con nombre "a a" z o "A a" Z
tres registros de solo lectura ":,"., "%
registro de buffer alternativo "#
el registro de expresión "=
Los registros de selección y descarte "*," + y "~
El registro del agujero negro "_
Último registro de patrón de búsqueda "/
Suponiendo que tiene un registro que va a usar ahora, el problema se convierte en "¿cómo sé cuándo se detuvo la grabación?". Para hacerse cargo de esto me gustaría echar un vistazo a la autocmd-event
de CursorHold
; la nota en los documentos de ayuda parece bastante prometedora (trataría de descubrir cómo podría diferenciar cursorHold normal frente al evento inactivo / no existente que ocurre cuando se escribe en su registro a los efectos de la macro)
CursorHold
Cuando el usuario no presiona una tecla durante el tiempo especificado con 'updatetime'. No se vuelve a activar hasta que el usuario haya presionado una tecla (es decir, no dispara cada 'tiempo de actualización' ms si deja Vim para hacer un café. :) Ver | CursorHold-example | para previsualizar etiquetas. Este evento solo se activa en modo Normal. No se activa cuando se espera que se escriba un argumento de comando o un movimiento después de un operador. Mientras se graba el evento CursorHold no se activa. | q |