Al usar set showcmd
Vim muestra comandos parciales en la última línea de la pantalla. Por ejemplo, en el modo Normal al escribir el comando, se dt.
muestra la última línea dt
y luego, al presionar .
el comando, se completa y, por lo tanto, no se muestra nada.
¿Hay alguna manera de mostrar comandos completos? Por ejemplo, al escribir dt.gU(
, primero dt.
se mostrará; y al comenzar a escribir el segundo comando, el primero se borrará, de modo que al final solo gU(
se mostrará.
Esto podría ser útil, por ejemplo, para ilustrar GIF; y para verificar que escribiste lo que querías si enfrentas algún resultado inesperado.
options
command-history
Gonçalo Ribeiro
fuente
fuente
dt
muestra porque es el operador actual pendiente. Una vez que se le da una moción, ya no es un operador pendiente. Supongamos que fuimos más allá y lo hicimos másdt.gU(gu)daw
o menos. ¿Es todo ese "un comando completo", o son cuatro comandos completos, o algo más?dt.gU(
hay 2 comandos:dt.
ygU(
... Entonces, lo que realmente quieres es mostrar algún tipo de historial de comandos (Vim ya muestra los "comandos completos").src/normal.c
las llamadas de códigoclear_showcmd()
en varios lugares (normal_cmd()
,do_pending_operator()
,end_visual_mode()
). Estoy jugando con volcar en un archivoshowcmd_buf
en esos puntos, que se veía bastante bien, pero me hace estar bastante seguro de que no puede obtener lo que quiere sin modificar de manera similar el código fuente de Vim y reconstruirlo. Por supuesto, hacerlo podría valer la molestia de hacer tus gifs.Respuestas:
No pude encontrar ninguna manera de hacer esto en un Vim normal. Sin embargo, si está dispuesto a parchear Vim, lo siguiente puede funcionar para usted.
El parche muy simple (aplicado contra Vim-7.4.052) deshabilita la actualización real de la pantalla que borra el historial al final de un comando normal. Lo hace devolviendo si
showcmd_is_clear
se configura o no antes de actualizar la pantalla. (alternativamente, puede comentar la declaración if y dejar solo lareturn
línea original . nota : El parche a continuación no se pegó muy bien; puede que tenga que aplicar esto a mano, aunque es solo una línea corta. nota : yo no comento hacia fuera la realdisplay_showcmd()
, ya que parece ser utilizado en modo visual para actualizar la visualización del número de líneas seleccionadas o de otros posiblemente otras cosas que no he probado ampliamente esta..El resultado se ve así:
Algunas cosas interesantes a tener en cuenta:
j
,k
,b
, etc.x
comando en realidad se conviertedl
en showcmd_buf.:
comando o ingresando al modo de inserción (al menos en mi configuración))"
, pero mi secuencia de teclas es visible en la ventana vim para mi registro largo especificado.^[
en el área showcmdfuente
Además de la solución de John , hay otra forma de mostrar todas las pulsaciones de teclas vim que se presionaron mediante el uso de
-w
parámetros que registran todos los caracteres que escribe en el archivo. El problema es que vim escribe pulsaciones de teclas solo cuando sale de Vim. Así es como funciona VimGolf .Para solucionar esto, a Kana Natsuno se le ocurrió este parche de una sola línea , que deshabilita el almacenamiento en búfer de la
-w
opción, por lo que tiene acceso a la secuencia de pulsaciones de teclas en tiempo real. Entonces es cuestión de leerlos (ptail -f
. Ej. ), Analizarlos o puede intentar mostrarlos en la barra de estado (:set statusline
).Echa un vistazo a una compilación personalizada de Vim usando la rama de pulsaciones de teclas live-stream de Drew de MacVim, para obtener la secuencia de pulsaciones de teclas en tiempo real.
Fuente: Vimprint, un analizador de pulsación de teclas Vim en el blog Drew Neil
Esto es útil si desea revelar las pulsaciones de teclas presionadas por Vim en video tutoriales o GIF.
fuente