Adventskalender-Nachtrag: Die Z-Shell mit Fish-Features
Verfasst: 31.12.2023 17:29:28
Als Ergänzung zum Adventskalender möchte ich noch meine ZSH-Konfiguration vorstellen.
Bitte seht diese als Work-In-Progress und korrigiert mich auch gerne. Ergänzungen und Verbesserungen sind auch willkommen.
Warum ZSH?
Ich habe lange Bash verwendet, da es eben als Standard eingerichtet ist. Da ich mir gerne Alternativen ansehe, bin ich u.a. über fish gestolpert. Fish bietet viele Features wie z.B: Vorschläge, Syntax-Highlighting, usw. ...
... das ist halt schon irgendwie cool und will man dann halt auch.
Allerdings ist Fish nicht POSIX-Kompatibel. Und da ich nicht auf Liquidprompt verzichten will, bleibt somit nur die ZSH.
Die ZSH ist Posix-Kompatibel und bietet enorm viele Anpassungs- und Erweiterungsmöglichkeiten. So viele, .... dass man schon fast ein Studium dafür benötigt.
Die Konfiguration ist in der Summe nicht gerade Trivial und erfordert etwas Einarbeitungszeit und Recherche.
Vielleicht kann dieser Post manchem etwas an Arbeit ersparen.
Install
Auf Liquidprompt wird hier nicht näher eingegangen, dies wurde bereits hier beschrieben:
viewtopic.php?t=188637
Erstmal die ZSH installieren:
Dann noch die benötigten Erweiterungen:
Ja, wir bedienen uns kurzerhand bei der fizsh, das ist am einfachsten.
Und ein paar nützliche Tools:
Autopair
Auto-Pair fügt z.B. zu einer öffnenden Klammer automatisch eine schließende Klammer ein.
Eigentlich eine sehr praktische Sache.
Wir müssen uns die Datei allerdings von hier holen:
https://github.com/hlissner/zsh-autopai ... topair.zsh
Ich hab' die Datei unter /usr/local/share/zsh/autopair.zsh abgelegt.
Wichtig! Damit es mit MC und McEdit keine Probleme gibt, muss die Zeile 9 wie folgt geändert werden:
ZSH-Abbr
Abbr ist eine Funktion, mit der sich ein langer Befehl als einfaches Kürzel schreiben lässt.
Z.B.: "ulb" statt "cd /usr/local/bin".
Dies lässt sich zwar auch mit "alias" erreichen, dies hier ist aber etwas praktischer.
Die Datei bekommen wir von hier:
https://github.com/olets/zsh-abbr/blob/ ... h-abbr.zsh
Bei mir liegt sie auch unter "/usr/local/share/zsh/"
Die Dokumentation befindet sich hier:
https://zsh-abbr.olets.dev/
Konfiguration
Generell wird ZSH über die ~/.zshrc konfiguriert.
Um hier nicht den Rahmen zu sprengen, liegt die Datei hier:
42063
Ich habe möglichst viele Kommentare eingefügt.
Für globale Einstellungen gibt es übrigens noch die: /etc/zsh/zshrc
Aliase
Damit es keinen Fehler gibt, muss noch eine ~/.bash_aliases erzeugt werden.
Bei mir liegen dort sehr viele Aliase. Alternativ kann man den Eintrag aber auch löschen.
Testen
Wer mit Bash unterwegs ist, kann ZSH nun einfach testen:
Komplett umstellen lässt sich mit:
Features
Sollte alles laufen, hat man z.B. die Möglichkeit eine Abkürzung zu definieren:
Nun kann "hw" jederzeit verwendet werden.
Und nach einem ...
... reicht dank Autojump zukünftig ein einfaches:
Ach ja ... mein absoluter Favorit ist das direkte Ausführen der Vorschläge mit:
Ausblick
Bei mir ist das alles noch ein klein wenig komplexer. Nach vielen anderen Experimenten nutze ich mittlerweile /usr/local als git-Repo und lege die Konfigurationen zentral unter /usr/local/etc ab. Entsprechend wird dann darauf verlinkt. So kann ich die Einstellungen auf allen Rechnern gut synchron halten.
Bitte seht diese als Work-In-Progress und korrigiert mich auch gerne. Ergänzungen und Verbesserungen sind auch willkommen.
Warum ZSH?
Ich habe lange Bash verwendet, da es eben als Standard eingerichtet ist. Da ich mir gerne Alternativen ansehe, bin ich u.a. über fish gestolpert. Fish bietet viele Features wie z.B: Vorschläge, Syntax-Highlighting, usw. ...
... das ist halt schon irgendwie cool und will man dann halt auch.
Allerdings ist Fish nicht POSIX-Kompatibel. Und da ich nicht auf Liquidprompt verzichten will, bleibt somit nur die ZSH.
Die ZSH ist Posix-Kompatibel und bietet enorm viele Anpassungs- und Erweiterungsmöglichkeiten. So viele, .... dass man schon fast ein Studium dafür benötigt.
Die Konfiguration ist in der Summe nicht gerade Trivial und erfordert etwas Einarbeitungszeit und Recherche.
Vielleicht kann dieser Post manchem etwas an Arbeit ersparen.
Install
Auf Liquidprompt wird hier nicht näher eingegangen, dies wurde bereits hier beschrieben:
viewtopic.php?t=188637
Erstmal die ZSH installieren:
Code: Alles auswählen
apt install zsh
Code: Alles auswählen
apt install zsh-autosuggestions zsh-syntax-highlighting fizsh
Und ein paar nützliche Tools:
Code: Alles auswählen
apt install liquidprompt autojump command-not-found lsd
Auto-Pair fügt z.B. zu einer öffnenden Klammer automatisch eine schließende Klammer ein.
Eigentlich eine sehr praktische Sache.
Wir müssen uns die Datei allerdings von hier holen:
https://github.com/hlissner/zsh-autopai ... topair.zsh
Ich hab' die Datei unter /usr/local/share/zsh/autopair.zsh abgelegt.
Wichtig! Damit es mit MC und McEdit keine Probleme gibt, muss die Zeile 9 wie folgt geändert werden:
Code: Alles auswählen
AUTOPAIR_PAIRS=('`' '`' "'" "'" '"' '"' '{' '}' '[' ']' '(' ')')
Abbr ist eine Funktion, mit der sich ein langer Befehl als einfaches Kürzel schreiben lässt.
Z.B.: "ulb" statt "cd /usr/local/bin".
Dies lässt sich zwar auch mit "alias" erreichen, dies hier ist aber etwas praktischer.
Die Datei bekommen wir von hier:
https://github.com/olets/zsh-abbr/blob/ ... h-abbr.zsh
Bei mir liegt sie auch unter "/usr/local/share/zsh/"
Die Dokumentation befindet sich hier:
https://zsh-abbr.olets.dev/
Konfiguration
Generell wird ZSH über die ~/.zshrc konfiguriert.
Um hier nicht den Rahmen zu sprengen, liegt die Datei hier:
42063
Ich habe möglichst viele Kommentare eingefügt.
Für globale Einstellungen gibt es übrigens noch die: /etc/zsh/zshrc
Aliase
Damit es keinen Fehler gibt, muss noch eine ~/.bash_aliases erzeugt werden.
Code: Alles auswählen
touch ~/.bash_aliases
Testen
Wer mit Bash unterwegs ist, kann ZSH nun einfach testen:
Code: Alles auswählen
zsh
Code: Alles auswählen
chsh -s /bin/zsh
Sollte alles laufen, hat man z.B. die Möglichkeit eine Abkürzung zu definieren:
Code: Alles auswählen
abbr hw="echo 'hello world'"
Und nach einem ...
Code: Alles auswählen
cd /home/user/Desktop
Code: Alles auswählen
j desk
Code: Alles auswählen
Strg + Leertaste
Ausblick
Bei mir ist das alles noch ein klein wenig komplexer. Nach vielen anderen Experimenten nutze ich mittlerweile /usr/local als git-Repo und lege die Konfigurationen zentral unter /usr/local/etc ab. Entsprechend wird dann darauf verlinkt. So kann ich die Einstellungen auf allen Rechnern gut synchron halten.