Prompt Oh-my-zsh para git (usando RVM)

Agora que estou usando zsh como meu shell principal para meu iMac há algum
tempo, descobri que já era hora de codificar meu prompt.

Depois de instalar o incrível
oh-my-zsh de Robby Russel , decidi
personalizar meu próprio tema. Então aqui está uma cópia dele:

user="%n"
host
="%m"
directory
="%~"
local smiley="%(?,%{$fg[green]%}☺ %{$reset_color%},%{$fg[red]%}☹ %{$reset_color%})"

PROMPT
=$'$fg[white]$user@$host%f $fg[red]$directory%f $fg[white]($(rvm-prompt))%f $(git_prompt_info)n$smiley'

ZSH_THEME_GIT_PROMPT_PREFIX
="$fg[red]["
ZSH_THEME_GIT_PROMPT_SUFFIX
="]"
ZSH_THEME_GIT_PROMPT_DIRTY
=" ●"
ZSH_THEME_GIT_PROMPT_CLEAN
=""

Começando do início, vamos descrever o que está acontecendo aqui de acordo com a documentação zsh
.

Primeiro, o useré definido como %n, que é um atalho para $USERNAME.

Em seguida, o hosté definido como %m, que é um atalho para o nome do host até o primeiro ..

Em seguida, o directoryé definido como %~, o qual se o diretório de trabalho atual
começar $HOME, essa parte será substituída por um ‘~’.

O smileyé muito mais complicado, então vamos dividi-la em pequenos
pedaços e descrever cada parte individualmente.

Primeiro, o início da linha tem %(?,, que retornará o status do
último comando executado pouco antes do prompt. Se retornar true, mostrará um
smiley verde , caso contrário, uma carranca vermelha .

Isso é feito usando várias funções fornecidas por
oh-my-zsh , definindo a
cor do primeiro plano como verde ou vermelho antes de imprimir o smiley e, em seguida, redefinindo
a cor de volta à configuração original.

Descendo para a configuração PROMPT , vemos que ocorre o seguinte:

  1. Defina a cor do primeiro plano para branco e exiba $user@$host
  2. Defina a cor do primeiro plano para vermelho e exiba $directory
  3. Defina a cor do primeiro plano como branco novamente e exiba o prompt rvm fornecido pelo RVM.
  4. Exibe o prompt do git, que também é fornecido por oh-my-zsh .
  5. Imprime uma nova linha e exibe o conteúdo de nossa smileyvariável, que será vermelho ou verde dependendo do resultado do último comando.

As variáveis ​​restantes começando com ZSH_THEME_GIT_PROMPTestão relacionadas apenas
ao status do git. A parte importante é que o comando verifica o status do git para
ver se está limpo ou não.
Em caso afirmativo, ele mostra o ponto vermelho para indicar esse caso,
que pode ser causado por arquivos não confirmados alterados ou arquivos que
foram adicionados ao índice git, mas ainda não confirmados.

Acho que personalizar o prompt do shell é uma ótima maneira de empacotar muitas
informações sobre seu ambiente atual e ser capaz de visualizá-lo rapidamente
, permitindo que seu fluxo de trabalho mantenha um ritmo rápido. Espero que isso beneficie
você tanto quanto para mim.

Para obter mais dicas sobre UNIX, consulte
Learning the UNIX Command Line .

Aproveite,
Chip