Respostas:
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
:
autoload -U colors && colors
PS1="%{$fg[red]%}%n%{$reset_color%}@%{$fg[blue]%}%m %{$fg[yellow]%}%~ %{$reset_color%}%% "
Cores Suportadas:
red
, blue
, green
, cyan
, yellow
, magenta
, black
, e white
(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 .
PS1="%{$fg[red]%}%n%{$reset_color%}@%{$fg[blue]%}%m %{$fg[yellow]%}%(5~|%-1~/.../%3~|%4~) %{$reset_color%}%% "
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 na Visual Effects
seção da página do manual do zshmisc
Zsh vem com prompts coloridos integrados. Experimentar
autoload -U promptinit && promptinit
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:
prompt fade red
Não acho que autoload -U colors && colors
seja mais necessário e pode-se simplesmente fazer:
PS1="%{%F{red}%}%n%{%f%}@%{%F{blue}%}%m %{%F{yellow}%}%~ %{$%f%}%% "
para obter o mesmo resultado da resposta do FireDude . Veja a documentação do ZSH para mais informações.
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.
for i in {1..256}; do print -P "%F{$i}Color : $i"; done;
%F{118}
(1 a 256)$FG[018]
(1 a 256)$fg[magenta]
(magenta, vermelho, branco, amarelo, preto, azul, ciano, verde)PS1='%(?.%F{green}.%F{green})%n@%m:%~%# %f'
PS1='%{$fg[gray]%}[%T][%n@%m%{$reset_color%}:%c%{$reset_color%}%{$fg[gray]%}$(git_prompt_info)]$(prompt_char)%{$reset_color%} '
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).
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
autoload -U colors && colors
export PS1="%F{214}%K{000}%m%F{015}%K{000}:%F{039}%K{000}%~%F{015}%K{000}\$ "
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:
RPROMPT="%F{111}%K{000}[%D{%f/%m/%y}|%@]"
Cores para ls
. Depois de ler o manual do ls, um, por exemplo, pode ativar as cores para ls
usar os dois comandos a seguir:
export CLICOLOR=1
export LSCOLORS=gafacadabaegedabagacad
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 usar gdircolors
(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.)
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, o colors
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.
Para obter um prompt com a cor dependendo do status de saída do último comando, você pode usar isto:
PS1='%(?.%F{green}.%F{red})%n@%m:%~%# %f'
Basta adicionar esta linha ao seu ~/.zshrc
.
A documentação lista possíveis marcadores.
Experimente o meu favorito: coloque
~/.zshrc
está linha:
PROMPT='%F{240}%n%F{red}@%F{green}%m:%F{141}%d$ %F{reset}'
não esqueça
source ~/.zshrc
para testar as mudanças
você pode alterar as cores / códigos de cores, é claro :-)
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 é.
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:
# Coloured prompt
autoload -U colors && colors
function myprompt {
local rc=$reset_color
export PS1="%F{cyan}%n%{$rc%}@%F{green}%m%{$rc%}:%F{magenta}%~%{$rc%}%# "
}
myprompt