Chapters ▾ 2nd Edition

A1.7 Appendix A: O Git em Outros Ambientes - Git no Zsh

Git no Zsh

O Zsh também é distribuído com uma biblioteca de autocompletar (tab-completion) para o Git. Para usá-la, basta executar autoload -Uz compinit && compinit no seu .zshrc. A interface do Zsh é um pouco mais poderosa que a do Bash:

$ git che<tab>
check-attr        -- display gitattributes information
check-ref-format  -- ensure that a reference name is well formed
checkout          -- checkout branch or paths to working tree
checkout-index    -- copy files from index to working directory
cherry            -- find commits not merged upstream
cherry-pick       -- apply changes introduced by some existing commits

As autocompletações ambíguas não são apenas listadas; elas têm descrições úteis, e você pode navegar graficamente pela lista apertando a tecla tab repetidamente. Isso funciona com comandos do Git, seus argumentos, e nomes de coisas dentro do repositório (como refs e remotes), bem como nomes de arquivos e todas as outras coisas que o Zsh sabe autocompletar.

O Zsh é distribuído com um framework para obter informações de sistemas de controle de versão, chamado vcs_info. Para incluir o nome do branch no prompt do lado direito, adicione estas linhas ao seu arquivo ~/.zshrc:

autoload -Uz vcs_info
precmd_vcs_info() { vcs_info }
precmd_functions+=( precmd_vcs_info )
setopt prompt_subst
RPROMPT='${vcs_info_msg_0_}'
# PROMPT='${vcs_info_msg_0_}%# '
zstyle ':vcs_info:git:*' formats '%b'

Isso resulta na exibição do branch atual no lado direito da janela do terminal, sempre que o seu shell estiver dentro de um repositório Git. O lado esquerdo também é suportado, obviamente; apenas descomente a atribuição a PROMPT. Fica um pouco parecido com isto:

Prompt de `zsh` customizado
Figure 185. Prompt de zsh customizado

Para mais informações sobre o vcs_info, confira a sua documentação na página de manual do zshcontrib(1), ou online em https://zsh.sourceforge.io/Doc/Release/User-Contributions.html#Version-Control-Information.

Em vez do vcs_info, você pode preferir o script de customização de prompt que é distribuído junto com o Git, chamado git-prompt.sh; veja https://github.com/git/git/blob/master/contrib/completion/git-prompt.sh para detalhes. O git-prompt.sh é compatível tanto com o Bash quanto com o Zsh.

O Zsh é poderoso o suficiente para que existam frameworks inteiros dedicados a torná-lo melhor. Um deles é chamado "oh-my-zsh", e pode ser encontrado em https://github.com/ohmyzsh/ohmyzsh. O sistema de plugins do oh-my-zsh vem com um autocompletar poderoso para o Git, e ele possui uma variedade de "temas" para o prompt, muitos dos quais exibem dados de controle de versão. Um exemplo de um tema do oh-my-zsh é apenas um exemplo do que pode ser feito com esse sistema.

Um exemplo de um tema do oh-my-zsh
Figure 186. Um exemplo de um tema do oh-my-zsh