Longitud de la cadena del modo readline en el símbolo del sistema bash

Longitud de la cadena del modo readline en el símbolo del sistema bash

¿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 onen .inputrc.

Quiero determinar la longitud de esta cadena desde dentro $PROMPT_COMMAND.

Estoy intentando hacer un movimiento del cursor dentro tputdel 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_COMMANDllama nuevamente y se reimprime el mensaje si se cambia el modo (por ejemplo), emacs-mode-stringcomo vi-ins-mode-stringprefijo?

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 getColumnhabía varias cosas que probé en función de:

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 shellchecklimpio.

información relacionada