ZSH Prompt printing '[m' em vez de '%'

1

Eu adicionei uma função de bateria à minha linha de status do vim aqui está um link . Ele exibe minha bateria corretamente no vim e se eu executar $ acpi | grep -oP "(\d+)%" , ele retornará algum número seguido pelo sinal de porcentagem (como esperado). Decidi atualizar meu zshrc , pois ele imprime melhor do que o cut que eu estava usando:

bat () { acpi | grep -oP "(\d+)%" }
PROMPT="%t | $(bat) | %d
$ "

No entanto, o que eu acabo é:

7:22PM | 89[m | /home/rain
$ 

Como obtenho o [m para imprimir como % ? Ou posso soltá-lo completamente e apenas ter a impressão digital?

    
por 345422 18.10.2018 / 01:45

1 resposta

3

O [m é provavelmente o final de um código de escape ANSI \e[m (= redefinido para cores e atributos normais, formato curto) com o caractere ESC inicial ( \e ) removido.

Meu palpite seria que seu grep esteja colorindo sequências de caracteres correspondentes quando executado interativamente, e a detecção de interatividade está falhando quando executada como parte de uma função de shell cuja saída se torna parte do prompt.

O sinal de porcentagem na saída aciona o processamento especial em prompts e, se %\e não significar nada, ele será simplesmente excluído.

Tente definir sua função bat assim:

bat () { acpi | grep --color=never -oP "(\d+)%" }
    
por 18.10.2018 / 08:00

Tags