Mit macOS X 10.15 Catalina wird kommt die zsh als neue Standard Shell. Ich hatte zuvor einige, praktische Erweiterung für meine bash angelegt, die jetzt erstmal nicht mehr vorhanden waren.
Also Entwickler benutze ich GitHub als Versionsverwaltung, und es ist praktisch in der Shell direkt zu sehen, ob mein aktuelles Verzeichnis auf dem aktuellen Stand ist, ob es Konflikte gibt, usw. Dies hatte ich alles mit der bash, so daß mein Prompt meinen Workflow gut unterstützt hat.
Jetzt kommt zsh und sieht initial echt arm aus.
Mein .bash_profile heisst jetzt .zprofile, die git-completion.sh funktioniert nicht mehr, auch .bashrc wird durch .zshrc ersetzt. Da wird man ja erstmal von seiner Arbeit abgehalten, wenn man ein System OS Update gemacht hat. Aber nach einer kurzen Internet Suche, ich wollte eigentlich nur git-completion.zsh, fand ich das Framework Oh my zsh. Keine Ahnung ob es sowas auch für die bash gibt, aber das hat mich erstmal milde gestimmt, denn damit konnte ich recht einfach all meine lieb gewonnen bash-Completions wieder aktivieren, bekam noch unzählige andere und da man neben funktionalen Plugins auch noch das Aussehen via Themes ändern kann, habe ich jetzt eine Fancy aussehende zsh Shell, mit den alt bekannten Git Informationen.
Wie sieht die Installation des ganzen aus. Begonnen wird natürlich mit dem Framework Oh my zsh.
% sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
Wenn man das Framework installiert hat, ist die Basis Version der .zshrc
angelegt, die man nach den eigenen Bedürfnissen anpassen kann. Z.B. legt man hier fest, welche Plugins beim Start der Shell geladen werden. Bei mir sieht dies so aus:
plugins=(git ant gradle jenv mvn osx)
Damit hat man bereits die Git-Completion fertig, mit der Anzeige des Status im aktuellen Verzeichnis. Bei Ant, Gradle und Maven bekommt man ebenfalls Code-Completion geliefert und kann so schneller entsprechende Targets finden (wenn man nicht gerade alle auswendig kennt).
Stand heute (04.03.2020) funktioniert das Docker Plugin bei mir leider nicht „out of the box“. Man muss zur problemlosen Verwendung eine Zeile in die .zshrc ergänzen, dafür einfach folgende Zeile ausführen:
% echo "autoload -Uz compinit; compinit" >> ~/.zshrc
Noch ein Beispiel für den Einsatz des jenv-Plugins. Verwendet man für verschiedene Projekte verschiedene JVMs, also lokale jenv Settings, kann man sich im Prompt die aktuelle VM Version ausgeben lassen. Aber neben dem linksbündigen Prompt, gibt es hier die Möglichkeit sich dies auch rechtsbündig anzeigen zu lassen. Die entsprechende Konfiguration in der .zshrc
würde so aussehen RPROMPT='$(jenv_prompt_info)'
.
Neben den Plugins, gibt es wie bereits erwähnt auch die Möglichkeit die Gestaltung via Themes zu steuern. Ein besonders Umfangreicher Theme ist hier sicherlich powerlevel10k. Die Installation ist auch denkbar einfach, ein Git Clone lädt die Dateien in das korrekte Verzeichnis:
% git clone --depth=1 https://github.com/romkatv/powerlevel10k.git $ZSH_CUSTOM/themes/powerlevel10k
Zum Aktivieren des Themes muss noch in der .zshrc
der Eintrag für ZSH_THEME angepasst werden
ZSH_THEME=powerlevel10k/powerlevel10k
Zum Aktivieren des Themes muss man ein neues Terminal-Fenster oder Tab öffnen. Dann wird man auch direkt mit dem Theme Konfigurator begrüsst.
Die Konfiguration kann aber auch manuell, über ein entsprechendes Kommando, gestartet werden.
% p10k configure
Meine Shell sieht jetzt so aus, in dem Beispiel sieht man noch die git-Completion, bei der man mit den Auf-/Ab-Tasten sogar in der Liste den gewünschten Eintrag auswählen kann.
Einen Punkt noch zur Anmerkung, da beim Öffnen der Shell jetzt einige Skripte laufen (alle Plugins müssen ja mal geladen werden), dauert dies ein paar Sekunden, bei mir in etwa 3 Sekunden. Es gibt auch die Möglichkeit dies zu verkürzen, in dem man den Shell-Prompt direkt anzeigt, ohne Theme, und dann im Hintergrund das ganze erst lädt bevor es angezeigt wird.
Falls man zurück zum Standard Theme möchte, wäre dies robbyrussell
, was man wieder in der .zshrc
konfiguriert.
Hier noch die Links zu den beiden Paketen:
Schreibe einen Kommentar