Comprimento da string do modo readline no prompt do bash

Comprimento da string do modo readline no prompt do bash

Como encontro o comprimento da string de modo readline (por exemplo, @or (cmd)or (ins)) que é impressa na frente do prompt do bash? Esta string de modo é ativada porset show-mode-in-prompt onem .inputrc.

Quero determinar o comprimento dessa string de dentro de $PROMPT_COMMAND.

Estou tentando fazer algum movimento do cursor tputdentro do prompt para imprimir algumas informações no lado direito do terminal (para que possam ser substituídas se necessário) e, em seguida, retomar a impressão do prompt à esquerda, mas preciso levar em conta o comprimento da string de modo.

É $PROMPT_COMMANDchamado novamente e o prompt é reimpresso se o modo for alterado (por exemplo) emacs-mode-stringpara vi-ins-mode-stringo prefixo?

Responder1

Não é realmente uma resposta à pergunta sobre o comprimento da string de modo, mas uma solução alternativa:

acabei usandoCódigos ANSI CSIpara salvar e restaurar a posição do cursor. (Obrigado @tripleee pela indicação).

Ainda não consegui encontrar o comprimento da string de modo, mesmo ao tentar obter a posição do cursor usando PS1=$(getColumn)onde getColumnestavam várias coisas que tentei com base em:

Minha solução alternativa usando códigos ANSI CSI pode ser encontrada comoem resposta a "Alinhar parte do prompt à direita".

Estou muito satisfeito com a solução alternativa, pois consegui fazê-la sem um único subprocesso e torná-la shellchecklimpa.

informação relacionada