Comprimento da string no modo readline no prompt do bash

1

Como faço para encontrar o comprimento da string de modo da linha de leitura (por exemplo, @ ou (cmd) ou (ins) ) que é impresso na frente do prompt do bash? Esta string de modo é ativada por set show-mode-in-prompt on em .inputrc .

Eu quero determinar o tamanho dessa string dentro de $PROMPT_COMMAND .

Estou tentando fazer algum movimento do cursor com tput dentro do prompt para imprimir algumas informações no lado direito do terminal (para que possa ser sobrescrito, se necessário) e, em seguida, continuar imprimindo o prompt à esquerda, mas preciso levar em conta o tamanho da string de modo.

O $PROMPT_COMMAND é chamado novamente e o prompt é reimpresso em caso de alteração do modo (por exemplo, emacs-mode-string to vi-ins-mode-string como o prefixo?

    
por Tom Hale 23.04.2017 / 13:48

1 resposta

0

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

Acabei usando códigos ANSI CSI para salvar e restaurar a posição do cursor. (Obrigado @tripleee pelo ponteiro).

Eu ainda não consegui encontrar o tamanho da string de modo, mesmo quando eu estava tentando obter a posição do cursor usando PS1=$(getColumn) onde getColumn era várias coisas que eu tentei com base em:

Minha solução alternativa para o uso de códigos ANSI CSI pode ser encontrada como em resposta a "Parte direita do prompt" .

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

    
por 26.04.2017 / 12:07