Para reconhecer melhor o início e o fim da saída em uma linha de comando, quero alterar a cor do meu prompt, para que seja visivelmente diferente da saída do programa. Como eu uso zsh, alguém pode me dar uma dica?
121
Aqui está um exemplo de como definir um prompt vermelho:
PS1=$'\e[0;31m$ \e[0m'
A mágica é \e[0;31m
(ativar o primeiro plano vermelho) e \e[0m
(desativar os atributos do personagem). Essas são chamadas de sequências de escape. Diferentes sequências de escape fornecem resultados diferentes, desde o posicionamento absoluto do cursor até a cor, a capacidade de alterar a barra de título de sua janela e assim por diante.
Para obter mais informações sobre sequências de escape, consulte a entrada da Wikipedia sobre códigos de escape ANSI
Coloque isso em
~/.zshrc
:Cores Suportadas:
red
,blue
,green
,cyan
,yellow
,magenta
,black
, ewhite
(a partir de esta resposta ), embora diferentes computadores podem ter diferentes opções válidas.Códigos de cores surround (e quaisquer outros caracteres não imprimíveis) com
%{....%}
. Isso é para que a quebra automática de texto funcione corretamente.Além disso, aqui está como você pode fazer isso funcionar com a remoção de diretório a partir daqui .
fonte
zsh: colors: function definition file not found
%{...%}
meios que o conteúdo vai ser interpretados como uma sequência de escape literal, de modo que o cursor não vai mover durante a impressão a sequência. Se você não usar isso, os códigos de cores podem mover o cursor e produzir efeitos indesejados. Isso está documentado naVisual Effects
seção da página do manual do zshmiscZsh vem com prompts coloridos integrados. Experimentar
e depois
prompt -l
lista os prompts disponíveis,-p fire
visualiza o prompt "disparar" e-s fire
define-o.Quando estiver pronto para adicionar um prompt, adicione algo assim abaixo da linha de carregamento automático acima:
fonte
Não acho que
autoload -U colors && colors
seja mais necessário e pode-se simplesmente fazer:para obter o mesmo resultado da resposta do FireDude . Veja a documentação do ZSH para mais informações.
fonte
autoload -U colors && colors
autoload
.autoload on
?autoload -U colors
, isso significa que sua distribuição já o possui em algum outro arquivo de inicialização zsh. Você ainda deve incluí-lo nos scripts que pretende compartilhar com outras pessoas.Cores disponiveis:
Variáveis Disponíveis:
%F{118}
(1 a 256)$FG[018]
(1 a 256)$fg[magenta]
(magenta, vermelho, branco, amarelo, preto, azul, ciano, verde)Exemplo de prompt:
Instalar:
A definição de variáveis (PS1 / PROMPT) precisa ser adicionada a
~/.zshrc
Também podemos redefinir a variável PS1 no prompt atual para testá-la imediatamente (as alterações não são salvas).
fonte
A resposta de Bryan Oakley acima tem uma falha, pois já foi apontada e a solução oferecida por Andrew Marshall embora não tenha a falha, no entanto, não a torna óbvia para muita personalização nas cores usadas.
Como o macOS Catalina pede que zsh seja o shell padrão de agora em diante, acho que várias outras pessoas podem querer personalizar seu prompt e podem vir aqui para obter uma resposta. Portanto, pensei em tentar fornecer um resumo mais amplo e tocar em outras noções intimamente relacionadas que permitem mais personalização.
Códigos de 3 dígitos para várias cores. Em primeiro lugar, aqui podemos encontrar códigos de 3 dígitos para várias cores: https://unix.stackexchange.com/a/124409/194343 . Por exemplo, 214 é algum tipo de cor laranja.
Primeiro plano e plano de fundo. A outra informação importante é que para cores de fundo F oreground e bac K pode-se definir o que querem com F e K respectivamente. A fonte é o manual zsh sobre efeitos visuais: http://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html#Visual-effects
Então, por exemplo, os dois comandos a seguir
apresente o nome do host em laranja com fundo preto, seguido por dois pontos em branco com fundo preto, seguido pelo diretório de trabalho atual em azul brilhante com fundo preto, seguido pelo cifrão em branco com fundo preto.
Mais informações relacionadas são encontradas abaixo.
Informações rápidas no lado direito. Por exemplo, adicionar um carimbo de data / hora. Consulte https://superuser.com/a/1251045/290299 . Claro, isso pode ser codificado por cores, por exemplo, com alguma cor azul claro / roxo, como este:
Cores para
ls
. Depois de ler o manual do ls, um, por exemplo, pode ativar as cores parals
usar os dois comandos a seguir:Por fim, como última observação que não testei, pois estou feliz com minha configuração, outro caminho pode ser alguém instalar a porta
coreutils
do MacPorts e usargdircolors
(fonte: https://unix.stackexchange.com/a/174596 / 194343 ). (Posso editar esta última parte no futuro, pois todas as acima são peças relacionadas que tornam a vida cotidiana muito mais divertida e fácil de lidar.)fonte
Descobri que, com zsh5 (o padrão no Debian Jessie), todas essas soluções funcionam:
$'\e[00m
$fg[white]
$fg{white}
Agora, eles têm um problema: eles moverão o cursor, resultando em um decalque feio durante a tabulação (para preenchimento automático). A solução é simplesmente cercar as sequências de escape com
%{FOOBAR%}
. Levei um tempo para descobrir isso. Para as 2ª e 3ª soluções, ocolors
módulo de carregamento é obrigatório. Para manter a 1ª solução legível, basta definir as variáveis para as cores que você usa.fonte
Para obter um prompt com a cor dependendo do status de saída do último comando, você pode usar isto:
Basta adicionar esta linha ao seu
~/.zshrc
.A documentação lista possíveis marcadores.
fonte
Experimente o meu favorito: coloque
está linha:
não esqueça
para testar as mudanças
você pode alterar as cores / códigos de cores, é claro :-)
fonte
man zshall e pesquise PROMPT EXPANSION
Depois de ler as respostas existentes aqui, várias delas são conflitantes. Eu tentei as várias abordagens em sistemas executando zsh 4.2 e 5+ e descobri que o motivo pelo qual essas respostas são conflitantes é que elas não dizem a qual versão do ZSH se destinam. Versões diferentes usam sintaxe diferente para isso e algumas delas requerem vários carregamentos automáticos.
Portanto, a melhor aposta é provavelmente manobrar o zshall e pesquisar PROMPT EXPANSION para descobrir todas as regras para sua instalação específica do zsh. Observe nos comentários, coisas como "Eu uso o Ubuntu 11.04 ou 10.4 ou OSX" não são muito significativas, pois não está claro qual versão do ZSH você está usando. Ubuntu 11.04 não implica uma versão mais recente do ZSH do que o ubuntu 10.04. Pode haver vários motivos pelos quais uma versão mais antiga foi instalada. Por falar nisso, uma versão mais recente do ZSH não implica qual sintaxe usar sem saber qual versão do ZSH é.
fonte
Para complementar todas as respostas acima, outro truque conveniente é colocar as configurações coloridas do prompt em uma função zsh. Lá você pode definir variáveis locais para alias de comandos mais longos, por exemplo,
rc=$reset_color
ou definir suas próprias variáveis de cor. Não se esqueça de colocá-lo em seu.zshrc
arquivo e chamar a função que você definiu:fonte