La siguiente configuración parece funcionar. El texto en la segunda línea desaparece si la línea de comando desborda la primera línea. La preexecfunción borra la segunda línea antes de ejecutar el comando; si quieres conservarlo, cambia a preexec () { echo; }.
%los escapes se documentan en el manual de zsh ( man zshmisc).
Terminfo es una API de acceso a terminal. Zsh tiene un terminfomódulo que da acceso a la base de datos de descripción del terminal: $terminfo[$cap]es la secuencia de caracteres a enviar para ejercer la capacidad del terminal $cap, es decir, ejecutar su $capcomando. Consulte man 5 terminfo(en Linux, el número de sección puede variar en otros dispositivos) para obtener más información.
La secuencia de acciones es: mover el cursor una línea hacia abajo ( cud1), luego hacia arriba ( cuu1); guardar la posición del cursor ( sc); mueva el cursor hacia abajo una línea; imprimir [some status]; restablecer la posición del cursor. El bit hacia abajo y hacia arriba al principio solo es necesario en caso de que el mensaje esté en la línea inferior de la pantalla. La línea preexec borra la segunda línea ( el) para que no se mezcle con la salida del comando.
Si el texto en la segunda línea es más ancho que el terminal, la pantalla puede estar distorsionada. Use Ctrl+ Len una pizca para reparar.
Aquí hay un bashequivalente de la solución zsh de Gilles. Bash no tiene un módulo terminfo nativo, pero el tputcomando (incluido terminfo) hace lo mismo.
Respuestas:
La siguiente configuración parece funcionar. El texto en la segunda línea desaparece si la línea de comando desborda la primera línea. La
preexec
función borra la segunda línea antes de ejecutar el comando; si quieres conservarlo, cambia apreexec () { echo; }
.%
los escapes se documentan en el manual de zsh (man zshmisc
).Terminfo es una API de acceso a terminal. Zsh tiene un
terminfo
módulo que da acceso a la base de datos de descripción del terminal:$terminfo[$cap]
es la secuencia de caracteres a enviar para ejercer la capacidad del terminal$cap
, es decir, ejecutar su$cap
comando. Consulteman 5 terminfo
(en Linux, el número de sección puede variar en otros dispositivos) para obtener más información.La secuencia de acciones es: mover el cursor una línea hacia abajo (
cud1
), luego hacia arriba (cuu1
); guardar la posición del cursor (sc
); mueva el cursor hacia abajo una línea; imprimir[some status]
; restablecer la posición del cursor. El bit hacia abajo y hacia arriba al principio solo es necesario en caso de que el mensaje esté en la línea inferior de la pantalla. La línea preexec borra la segunda línea (el
) para que no se mezcle con la salida del comando.Si el texto en la segunda línea es más ancho que el terminal, la pantalla puede estar distorsionada. Use Ctrl+ Len una pizca para reparar.
fuente
Aquí hay un
bash
equivalente de la solución zsh de Gilles. Bash no tiene un módulo terminfo nativo, pero eltput
comando (incluidoterminfo
) hace lo mismo.Si el terminal no admite una de las capacidades, recurrirá a un indicador de una línea.
La
trap
línea es una forma hacky de emular lapreexec
función de zsh . Consulte /superuser/175799/ para obtener más información.EDITAR : guión mejorado basado en los comentarios de Gilles.
fuente