2009-08-18 31 views
63

Quiero ejecutar una macro Acabo de registrar en el registro "x" en cada línea de un búfer abierto, desde mi cursor hasta el final del búfer, en vim. ¿Cómo puedo hacer eso?reproducir una macro vim hasta el final del búfer

Sé que puedo jugar de nuevo las n veces macro:

[email protected] 

... o simplemente mantenga pulsada @ hasta llegar a la de la última línea, pero quiero acaba de golpear unas pocas teclas y hacerse con eso.

Gracias de antemano.

+0

15 @ x no funciona en Windows gVim –

Respuesta

77

Personalmente me gustaría hacer

VG:normal @x 

Editar: cambió de registro a la una usted especificó.

+0

Bueno. Me gusta que esta solución funcione solo en el área seleccionada. – Kevin

+0

Mapeé esto a nnoremap <[email protected]> VG: norma @ q PAS

5

[email protected], a menos que tenga un buffer muy grande ...

+3

por qué no sólo '%: Largo @ x' o '1, $: normal @ x'? –

+3

esta es definitivamente la solución más elegante - Supongo que '99999 @ x' es lo más natural que se te ocurre cuando tienes prisa :) – Peter

+1

No lo ejecutaré 9999999 @ x muchas veces en la última línea a menos que tienes exactamente 999999 líneas? –

17

hacer macro recursiva:

[email protected] 

ejemplo:

[email protected] 

Va upcase primera palabra de la línea actual para el final del archivo con solo @a. Pero asegúrese de que "un registro está vacío:

let @a="" 
+3

Excelente. Este enfoque es más útil que el enfoque '%: normal' 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 su 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. –

+2

Evita esto si tu macro implica una búsqueda, ya que continuará desde arriba. 'ctrl-c' para detener si eso sucede! –

+2

@IainBallard, ': set nowrapscan' lo hace fallar y se detiene al llegar al final del archivo. – ericbn

53

Usted puede hacer (en el modo de comandos)

:%normal @x 
0

De vim wiki, versión acortada: qqqqq para grabar la macro @qq para terminar la grabación @q para ejecutarlo (y durará hasta el final del archivo)

+1

Por favor, ¿Puede agregar una referencia a la documentación? – aturegano

+1

@aturegano Creo que el autor pretendía usar una macro recursiva. Ver [The Vim Wiki: Grabar una macro recursiva] (http://vim.wikia.com/wiki/Record_a_recursive_macro) para obtener más información. – dylnmc

Cuestiones relacionadas