Pesquisa reversa interrompe o prompt do terminal de várias linhas

2

Como configurar corretamente PS1 se eu quiser \n ?

PS1="\[3[38;5;132m\]\n┌─■ testing\n└─■ \[$(tput sgr0)\]"

Atualmente, tenho a cor de primeiro plano do terminal diferente do prompt real, portanto, usar pesquisa reversa (Ctrl + R) redefine a cor da linha para o primeiro plano, em vez da cor do prompt especificado em PS1.

demo

    
por seeker_of_bacon 17.08.2017 / 00:11

1 resposta

3

Você precisará repetir a codificação de escape no início da linha que está perdendo sua formatação:

PS1="\[3[38;5;132m\]\n┌─■ testing\n\[3[38;5;132m\]└─■ \[$(tput sgr0)\]"

Como outras linhas podem ser afetadas da mesma forma, é melhor aplicar códigos de escape após cada nova linha. No entanto, você não precisa aplicá-las em uma linha vazia. Então, aqui está o que acabamos com:

PS1="\n\[3[38;5;132m\]┌─■ testing\n\[3[38;5;132m\]└─■ \[$(tput sgr0)\]"

Eu testei e tudo funciona para mim. (E eu tenho usado um prompt multi-line colorido como esse por um tempo sem problemas.)

Presumivelmente, o que está acontecendo aqui é que a linha de leitura está sobrescrevendo essa linha (redefinindo as cores) e, em seguida, redesenhando-a com apenas essa parte do valor PS1 . Como você não aplicou explicitamente as cores nessa linha, você terá a cor padrão (por exemplo, branco).

    
por 17.08.2017 / 04:14