noqqe


blog | sammelsurium | projects | about

Die Fish Shell

2018-01-28 @ bash, fish, shell

Seit 2 Monaten ist die fish Shell sowohl @work als auch zuhause meine Login Shell. Dazu gekommen ist es durch yogan und Mullet die ebenfalls umgestiegen sind und mich mit dem Thema angefixt haben.

So eine neue Shell ist schon eine Umstellung. Seitdem ich Linux mache heisst eben diese Shell für mich Bash. Ab und an hatte ich mal versucht mich mit zsh anzufreunden, hab es aber immer gleich wieder verworfen.

Es dauert natürlich eine ganze Zeit bis man sich dort häuslich einrichtet. Die Configs die man seit Jahren mit sich herumschleift, die Funktionen und Aliases. Das schreckt erstmal ab. Ausserdem dachte ich Jahre das ich mich nie an eine Shell gewöhnen könnte, die anders ist als die auf all den Servern auf denen ich den ganzen Tag herumfuhrwerken muss. Scheinbar irrte ich.

Die Migration der Skripte ging ich eins nach dem anderen an. Im Grunde von nano-bash nach fishstaebchen migrieren. Ja. Sorry für den Namen. Wenn man die beiden Repos vergleicht, kann man auch gut sehen wie sich die Code Teile im Vergleich zu Bash verändert haben. Eigentlich nur marginal.

Auch ansonsten gewöhnte ich mich überraschend schnell an das etwas andere Verhalten von fish. Größter Blocker war ctrl+r für die Rückwärtssuche. Dafür habe ich aber dann die gängige Lösung mit fzf gewählt und in die Config eingebaut.

set -U FZF_DEFAULT_OPTS "--height 5 -e --inline-info"

Wenn ich nun ctrl+r drücke, kann ich (halbwegs) wie gewohnt durch meine History durch. Ich muss aber dazu sagen, dass ich mit fish die Rückwärtssuche deutlich weniger benutze, da die Completion so schön ist.

Der markierte Teil in lila(?) wird mir einfach vorgeschlagen und mit ctrl-e (yay emacs..) übernommen.

Extrem schön finde ich auch den Teil der Autocompletion welcher Optionen gleich erklärt. Lieblingsbeispiel dafür ist natürlich gpg.

Aber darauf brauche ich jetzt nicht weiter eingehen da es wohl eines der Main Features ist, weswegen Leute fish benutzen.

Ein bisschen Strange finde ich die Webinterface Konfiguration und dieses fishd File in dem dann dynamische Config Ergebnisse daraus landen, aber ich hatte noch keine Zeit zu verstehen/recherchieren ob/wie es sich abschalten lässt.

Die Funktionalität Plugins mittels fisher zu installieren empfand ich als sehr angenehm, da ich eine ähnliche Vorgehensweise schon in meinem vim habe. So kann ich mir via

$ fisher barnybug/docker-fish-completion

einfach die Tab Completion für docker holen, so ich sie denn brauche. Außerdem zu Erwähnen ist noch die (wesentlich) angenehmere Implementation von z. Ich nutzte z auch schon in der Bash aber durch doofes verhalten nie wirklich sinnvoll.

Im Moment bin ich mit fish sehr zufrieden. Wie lange das so bleibt lasse ich mal offen. Wahrscheinlich so lange bis mir wieder etwas anderes zwischen die Finger kommt. Aber das ist ja normal.