
¿Cómo encuentro la longitud de la cadena de modo de readline (por ejemplo, @
o (cmd)
o (ins)
) que se imprime delante del indicador de bash? Esta cadena de modo se activa medianteset show-mode-in-prompt on
en .inputrc
.
Quiero determinar la longitud de esta cadena desde dentro $PROMPT_COMMAND
.
Estoy intentando hacer un movimiento del cursor dentro tput
del mensaje para imprimir información en el lado derecho del terminal (para que pueda sobrescribirse si es necesario), luego reanudo la impresión del mensaje a la izquierda, pero necesito tener en cuenta Tenga en cuenta la longitud de la cadena de modo.
¿Se $PROMPT_COMMAND
llama nuevamente y se reimprime el mensaje si se cambia el modo (por ejemplo), emacs-mode-string
como vi-ins-mode-string
prefijo?
Respuesta1
Realmente no es una respuesta a la pregunta sobre la longitud de la cadena de modo, sino una solución alternativa:
terminé usandoCódigos ANSI CSIpara guardar y restaurar la posición del cursor. (Gracias @tripleee por el consejo).
Todavía no pude encontrar la longitud de la cadena de modo, incluso cuando intentaba obtener la posición del cursor usando PS1=$(getColumn)
dónde getColumn
había varias cosas que probé en función de:
- Obtener la posición vertical del cursor
- https://stackoverflow.com/questions/2575037/how-to-get-the-cursor-position-in-bash
Mi solución alternativa utilizando códigos ANSI CSI se puede encontrar comoen respuesta a "Alinear a la derecha parte del mensaje".
Estoy bastante satisfecho con la solución, ya que logré hacerlo sin un solo subproceso y dejarlo shellcheck
limpio.