Quiero ejecutar una macro que acabo de registrar en el registro " x
" en cada línea de un búfer abierto, desde el cursor hasta el final del búfer, en vim. ¿Cómo puedo hacer eso?
Sé que puedo reproducir la macro n veces:
15@x
... o simplemente mantener presionado @
hasta que llegue a la última línea, pero quiero presionar algunas teclas y terminar con eso.
Gracias por adelantado.
Respuestas:
Personalmente lo haría
Editar: cambio de registro al que especificó.
fuente
Puedes hacer (en modo comando)
fuente
hacer macro recursiva:
ex:
UPCASE la primera palabra desde la línea actual hasta el final del archivo con una sola @a. Pero asegúrese de que "un registro esté vacío:
fuente
%:normal
enfoque, ya que respeta cualquier movimiento de línea dentro de la macro, por lo que es útil cuando las líneas no son idénticas en forma. Me resulta más fácil crear una macro 'a' para definir la acción y luego hacer que la macro 'b' haga el bit recursivo, es decir, qb @ a @ bq.ctrl-c
parar si eso sucede!:set nowrapscan
hace que falle y se detenga al llegar al final del archivo.qaq
antes de la macro:qaqqa0gUwj@aq
. Además, si olvida poner el@q
al final, siempre puede hacerloqA
para comenzar a agregar un registro, y luego hacerlo@q
. Por lo general, grabo en reg q por alguna razón porque es fácil (especialmente para macros recursivas) y generalmente termino haciendo enqqqqqgUiwj@qq
lugar de dos macros. Los primeros tresq
s borran reg q, los dosq
segundos comienzan a grabar. Ver vim.wikia.com/wiki/Record_a_recursive_macroa
registro, se podría escribir simplementeqaq
999999@x
, a menos que tenga un búfer muy grande ...fuente
%:normal @x
o1,$:normal @x
?99999@x
es lo natural que se te ocurre cuando tienes prisa :)Desde vim wiki, versión abreviada: qqqqq para grabar la macro @qq para terminar de grabar @q para ejecutarla (y se ejecutará hasta el final del archivo)
fuente