Bash sobrescreve a primeira linha, prompt bash do PS1

3

Eu brinquei com PS1 e PROMPT_COMMAND no bash para criar um prompt no lado direito do estilo zsh. Eu tenho uma solução que quase funciona

.

O problema é que, se eu escrever uma longa linha de entrada, a segunda linha substitui a primeira. A terceira linha aparecerá bem em uma nova linha.

Talvez alguns contadores de linha sejam um por um porque meu movimento do cursor, ou isso é uma limitação / bug?

Um exemplo simples:

export PS1="prompt>\[3[s3[10C\]test\[3[u\]"

Imprima prompt> , salve a posição, mova 10 caracteres para a esquerda, imprima test , restaure a posição.

Os prompts parecem legais e funcionam perfeitamente, até eu escrever mais de uma linha de texto.

Exemplo 1, comportamento esperado:

------------------------------------
prompt>          test
prompt>ls        test
files...
prompt>1 2 3 4 5 6 7 8 9 10 11 12 13
14 15 16 17 18 19 20 21 22 23 24 25
26 27 28

Exemplo 2, comportamento atual:

------------------------------------
prompt>          test
prompt>ls        test
files...
14 15 16 17 18 19 20 21 22 23 24 253
26 27 28
    
por nsg 04.10.2012 / 15:08

1 resposta

7

Ah, claro. O teste não deve ser contado como um caractere visível e deve ser incluído entre \[ e \] .

Exemplo de trabalho:

export PS1="prompt>\[3[s3[10Ctest3[u\]"

O motivo foi porque se o teste de contagem bash for um caractere visível, ele assumirá que o cursor e o cálculo dos caracteres disponíveis restantes na linha atual serão desativados em quatro caracteres (comprimento de 'teste').

    
por 04.10.2012 / 15:27

Tags