
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 on
em .inputrc
.
Quero determinar o comprimento dessa string de dentro de $PROMPT_COMMAND
.
Estou tentando fazer algum movimento do cursor tput
dentro 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_COMMAND
chamado novamente e o prompt é reimpresso se o modo for alterado (por exemplo) emacs-mode-string
para vi-ins-mode-string
o 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 getColumn
estavam várias coisas que tentei com base em:
- Obtenha a posição vertical do cursor
- https://stackoverflow.com/questions/2575037/how-to-get-the-cursor-position-in-bash
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 shellcheck
limpa.