Kapitel ▾ 2. Auflage

A1.7 Anhang A: Git in anderen Umgebungen - Git in Zsh

Git in Zsh

Zsh wird auch mit einer Tabulator-Vervollständigungsbibliothek für Git geliefert. Um diese zu verwenden, führen Sie einfach autoload -Uz compinit && compinit in Ihrer .zshrc aus. Zsh's Benutzeroberfläche ist etwas leistungsfähiger als die von 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

Mehrdeutige Tabulator-Vervollständigungen werden nicht nur aufgelistet; sie haben hilfreiche Beschreibungen, und Sie können die Liste grafisch durch wiederholtes Drücken der Tabulatortaste durchlaufen. Dies funktioniert mit Git-Befehlen, deren Argumenten und Namen von Dingen im Repository (wie Refs und Remotes) sowie mit Dateinamen und allen anderen Dingen, für die Zsh die Tabulator-Vervollständigung beherrscht.

Zsh wird mit einem Framework zur Abfrage von Versionskontrollsystemen geliefert, das vcs_info heißt. Um den Branch-Namen in der Eingabeaufforderung auf der rechten Seite anzuzeigen, fügen Sie diese Zeilen zu Ihrer ~/.zshrc-Datei hinzu:

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'

Dies führt zu einer Anzeige des aktuellen Branches auf der rechten Seite des Terminalfensters, wann immer Ihre Shell sich in einem Git-Repository befindet. Die linke Seite wird natürlich auch unterstützt; kommentieren Sie einfach die Zuweisung zu PROMPT aus. Es sieht ungefähr so aus:

Customized `zsh` prompt
Abbildung 185. Angepasste zsh-Eingabeaufforderung

Weitere Informationen zu vcs_info finden Sie in der Dokumentation auf der Manpage zshcontrib(1) oder online unter https://zsh.sourceforge.io/Doc/Release/User-Contributions.html#Version-Control-Information.

Anstelle von vcs_info bevorzugen Sie möglicherweise das Skript zur Anpassung der Eingabeaufforderung, das mit Git geliefert wird und git-prompt.sh heißt. Details finden Sie unter https://github.com/git/git/blob/master/contrib/completion/git-prompt.sh. git-prompt.sh ist sowohl mit Bash als auch mit Zsh kompatibel.

Zsh ist so leistungsfähig, dass es ganze Frameworks gibt, die darauf abzielen, es zu verbessern. Eines davon heißt "oh-my-zsh" und ist unter https://github.com/ohmyzsh/ohmyzsh zu finden. Das Plugin-System von oh-my-zsh verfügt über eine leistungsstarke Git-Tabulator-Vervollständigung und eine Vielzahl von Eingabeaufforderungs-"Themes", von denen viele Versionskontroll-Daten anzeigen. Ein Beispiel für ein oh-my-zsh-Theme ist nur ein Beispiel dafür, was mit diesem System möglich ist.

An example of an oh-my-zsh theme
Abbildung 186. Ein Beispiel für ein oh-my-zsh-Theme