¿Puedo repetir una macro con el .
comando? Por ejemplo, me gustaría poder escribir:
@q...
y que efectivamente llame @q
4 veces. Con el comportamiento por defecto, esto sólo funciona si 'Q' tiene un solo comando, por ejemplo dw
, x
o iHello<esc>
. (Esto tiene sentido, ya que '.' Repite el último cambio , no las últimas pulsaciones / comando)
También me encantaría tener este trabajo con cuentas. Por ejemplo, escribiendo:
3@q.
sería efectivamente lo mismo que correr @q
6 veces. ¿Cómo puedo configurar este comportamiento?
Enter
@@
repite la última macro, por lo que si está pidiendo esto por el bien de los mapeos y tal, debería funcionar para usted.Respuestas:
Prueba esto. Se reasigna
@
para que luego se useg@
(más un movimiento ficticiol
), convirtiéndose así en el último operador y sujeto a repetición con.
.He tratado de manejar tantos casos de esquina como puedo pensar. Puedes repetir
@:
con.
. Cuenta@
o.
se retiene para imprentas posteriores de.
.Esto es complicado, y no estoy convencido de que algo no se rompa en algún lugar del camino. Entonces no hay garantías, garantías o promesas con este.
Personalmente, estoy bien teniendo una diferencia entre las repeticiones de grano fino
.
para el último cambio y las repeticiones macro de@@
.EDITAR
Pensé, habiendo llegado tan lejos, que también podría agregar algún código adicional que permita presionar
.
inmediatamente después de grabar una macro para reproducirla.fuente
.vimrc
).
inmediatamente después de la grabación.\<plug>qstop
debería estar antesq
en la función QStartPara repetir la última macro se puede utilizar
@@
de modo3@@
que esencialmente ejecutar @q 3 veces. Sin embargo, las pulsaciones de teclas @ pueden ser difíciles de manejar, por lo que en mi .vimrc tengo las líneas:Esto me permite usar mi clave de líder (,) más m para ejecutar la última macro. Entonces puede preceder esto con un número para repetir la macro.
Ahora
3,m
es equivalente a3@@
. Las mismas teclas totales y no hay necesidad de mantener turno.EDITAR : Al repensar esto, se me ocurrió una nueva macro.
nmap <leader>. @@
Esto también funciona cuando está precedido por un número, por3,.
lo que ahora me3@@
encantaría ver este trabajo para poder pasar una letra macro y hacer que esa macro se repita en lugar de la última macro.fuente
3@q.
correr@q
6 veces. Esto no hace eso.3@q.
? Parece que también podrías anteponerlo con un recuento. Tiendo a establecer una búsqueda antes de comenzar una macro y luego la uson
en la macro para saltar al inicio de donde se puede reproducir.Puede registrar el uso de una macro en otra macro y repetir eso.
Ahora
3@r
es como correr@q
seis veces.fuente
Por defecto,
space
en vim está "mover a la derecha 1 carácter" que ya está cubiertol
, por lo que he reasignado el espacio para volver a ejecutar una macro desde el búfer q:Para usar, solo grabe una macro con
qq
primero, deje de grabar conq
y luego presionespace
para reproducir.fuente
Como no uso
,
y me gusta una solución simple y fácil de escribir, esto funciona para mí:fuente