As cores no prompt zshell causam um comportamento estranho

0

Estou executando o OSX Lion 10.7.3, zsh versão 4.3.11. Descobri que, se eu tiver códigos de escape coloridos no meu prompt, isso realmente estraga tudo. Por exemplo, se eu rolar para frente através do histórico de comandos para uma linha longa e, em seguida, rolar de volta para um mais curto, muitos dos caracteres não serão apagados. Se eu tivesse que adivinhar, estava contando o número de caracteres visíveis e, em seguida, usando isso para determinar quantos caracteres a serem eliminados - o que não limparia caracteres suficientes, é claro.

Por que vale a pena, o pacote Readline do Ruby exibe o mesmo comportamento (o que significa que também não posso ter cores no prompt irb ).

bash se comporta perfeitamente, então não tenho certeza do que está acontecendo. Eu assumo que bash e zsh estão usando readline ... então não vejo o que dá.

Qualquer ajuda seria muito apreciada.

Atualização de 19/3/12

Eu tentei o sistema zsh e o instalado via brew install zsh - sem dados de qualquer forma.

Aqui está a saída de otool -L /usr/local/Cellar/zsh/4.3.17/bin/zsh :

/usr/local/Cellar/zsh/4.3.17/bin/zsh:
    /usr/local/lib/libgdbm.4.dylib (compatibility version 5.0.0, current version 5.0.0)
    /usr/local/lib/libpcre.0.dylib (compatibility version 1.0.0, current version 1.1.0)
    /usr/lib/libiconv.2.dylib (compatibility version 7.0.0, current version 7.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.1.0)
    /usr/lib/libncurses.5.4.dylib (compatibility version 5.4.0, current version 5.4.0)

Parte de mim se pergunta se é um problema com libncurses, pois presumo que seja o que é usado na funcionalidade de conclusão e histórico.

    
por Charles 19.03.2012 / 06:09

1 resposta

0

Whoops - Eu precisava cercar os códigos de cores com %{ e %} , como mencionado aqui:

Comportamento de autocompletar de zsh estranho

Então, se eu quisesse que uma parte do prompt fosse azul, poderia ser assim:

  export PS1=$'%{$fg[blue]%}${PWD/#$HOME/~}%{$reset_color%} %{$fg[red]%}→%{$reset_color%}'

Isso seria parecido com ~/src → .

    
por 19.03.2012 / 21:56