Sé que puedo usar .
para repetir el último comando de edición.
¿Hay alguna manera de repetir el último comando de manipulación de la interfaz de usuario? Por ejemplo, puedo escribir 10<C-W>-
para reducir una ventana en diez filas. Sería bueno para ser capaz de prensa ⟨ alguna clave ⟩ repetir fácilmente este comando si quiero reducir su tamaño más.
repeated-commands
wchargin
fuente
fuente
fz
y luego10;
? ¿Qué hay de:tabm +1
? ¿Todos estos tendrán que estar en una carcasa especial?Respuestas:
El comando dot
.
funciona porque Vim "realiza un seguimiento" de los comandos que cambian el contenido de los buffers. Si ejecuta:echo b:changedtick
, verá que se incrementa con cada cambio en el búfer actual.Pero Vim no "realiza un seguimiento" de los comandos que no son de edición. Por lo tanto, no, lo que estás pidiendo no se puede hacer.
fuente
No hay forma de hacerlo de forma predeterminada en vim porque vim no realiza un seguimiento del wincmd ejecutado anteriormente. Sin embargo, es posible hacer esto a través de algunas asignaciones inteligentes:
Tenga en cuenta que si tiene alguna asignación que use
<C-w>
, solo se puede repetir si no es de lanore
variedad. Los wincmds emitidos usando:wincmd
no se repetirán. Además, no se pueden realizar wincmds que contengan más de un carácter (como<C-w>gf
) .Temas de ayuda relevantes
:help v:count
:help getchar()
:help nr2char()
:help expr1
:help :wincmd
:help :execute
:help :for
:help :map-<silent>
:help c_CTRL-U
:help <SID>
fuente
.
con un conteo. Cuando se suministra un recuento.
, se ignora el recuento anterior. Entonces2dd
seguido de3.
eliminaría 2 líneas y luego 3 líneas; en contraste, con sus asignaciones,2<C-w>-
seguido3Q
reduciría la ventana en 2 líneas y luego en 6 (= 2x3) líneas. Ese comportamiento está bien, pero es bueno extraer de los comandos Vim incorporados análogos al elegir cómo debe comportarse un comando personalizado.El complemento submode puede ayudar con esto. Puede definir un "submodo" que ingresa escribiendo
<C-W>-
, en el que ha definido-
(y tal vez+
) para continuar cambiando el tamaño de la ventana.fuente
Hay otro complemento llamado repmo.vim ("repetir movimientos") que puede hacer lo que quiera.
Pero deberá especificar qué movimientos (o acciones en general) desea repetir. El mío está configurado actualmente de esta manera:
Entonces, después de hacerlo 5 CTRL-W +, puedo presionar ;para repetirlo tantas veces como quiera.
El complemento funciona creando asignaciones para cada una de las claves especificadas.
Cuando
f
ot
se usan, las asignaciones;
y,
se vuelven a borrar a su comportamiento predeterminado.Me parece
g;
especialmente útil la asignación , para volver a un punto de edición anterior. g; ; ; ;fuente
,
actúa de inmediato y5,
también funciona como se esperaba. ¿Es posible que haya establecido lamapleader
a,
?