bash vi-mode / zsh ?
Bash vi-Mode
und dann noch so einfach, einfach mit folgender Ergänzung in .bashrc ?
set -o vi
ja, und das klappt auch tadellos (zb. b / w, etc). Eigentlich doch recht angenehm, wenn man sowieso sonst mit vim arbeitet…
Hier verlässt man dann, wie in vi, mit esc den Input-Mode bei der Eingabe von normalen Commands….
Da sitzt man doch täglich stundenlang vor Terminals und findet sowas per Zufall mal so nebenbei raus… und vorallem geht das ja nicht nur in bash, wenn man’s ins .inputrc schmeisst (was ich noch nicht selbst probiert hab).
set editing-mode vi
Einige Basic-Features, die man dadurch erreicht:
- ^ – zum Start der Zeile
- $ – zum Ende der Zeile
- b – ein Wort zurück
- w – ein Wort vorwärts
- e – zum Ende des nächsten Worts
- v – visual Mode; öffnet $Editor und mehrere Zeilen können geschrieben werden
- Löschen/yanking/einfügen wie unter vim
- history kann mit j/k durchgescrollt werden
Das ganze lässt sich auch noch “weiterausbauen”
bind 'set show-mode-in-prompt on
Damit wird beim Prompt ein (cmd) oder (ins) angezeigt, je nach Modus.
Das lässt sich jedoch auch nach eigenem Gusto anpassen, indem man den String definiert
bind 'set vi-ins-mode-string [i]' bind 'set vi-cmd-mode-string [n]'
Hiermit würde anstatt (cmd) und (ins) einfach ein [n] oder [i] anzeigt.
Mir persönlich gefällt aber diese Variante am besten
bind 'set vi-ins-mode-string \1\e[6 q\2' bind 'set vi-cmd-mode-string \1\e[2 q\2'
Dies ändert lediglich den Cursor, so wie etwa auch in vim selbst. Das Prompt bleibt unverändert.
Die Codes können auch angepasst werden, indem die Nummer nach \e[
angepasst wird (siehe Stackoverflow-Thread):
Ps = 0 -> blinking block. Ps = 1 -> blinking block (default). Ps = 2 -> steady block. Ps = 3 -> blinking underline. Ps = 4 -> steady underline. Ps = 5 -> blinking bar (xterm). Ps = 6 -> steady bar (xterm).
zsh / Powerlevel
naja, irgendwie hab ich das Gefühl, das ganze ist derzeit sehr hip und alle Screenshots, die man sieht, haben alle nur noch solche Shells. Das finde ich nicht sooo sympathisch (Hipster ?!). Aber angeschaut hab ich’s mir trotzdem. Und ich muss gestehen, wenn man in einem git-Repo ist, dann ist das ganze schon recht angenehm…. (ansonsten sehe ich den Sinn jetzt nicht so sehr, bis jetzt zumindest).
Aber in git sieht man gleich, ob es neue Files gibt, ob commits noch nicht gepusht wurden etc. Schon irgendwie angenehm. Aber es geht auch ohne, ist derzeit noch meine Meinung….irgendwie viel zu farbig… (einen git status und so muss ich ja auch hier trotzdem machen, wenn ich mehr wissen möchte).
Powerlevel9k ist aber recht anpassbar, wie man das ganze dargestellt haben möchte.
Auf terminalsare.sexy gibt es etliche Varianten, die versuchen git in die Bash (und zsh) zu integrieren. Hier hat es bestimmt noch einige sehenswerte Ansätze mit dabei.
Zudem wurde vor einiger Zeit einiges Powerline-Zeugs grad auch ins Debian-Repo aufgenommen (natürlich genau nachdem ich alles (also eigentlich nur die Powerline-Fonts und vim-airline) in ein kleines Shellscript gebastelt hab…d’oh… die Powerline Fonts benötigte ich derzeit aber nur für die Symbole in meinen i3-Workspaces).
Heisst das jetzt, dass ich aus reinen Bequemlichkeitsgründen auf zsh umsteige oder das bash-powerline-script anpasse ? Oder bleib ich oldschool bei dem, was ich schon seit Jahren verwende ? Ich weiss es selbst noch nicht. Werde wohl ein bisschen länger damit arbeiten müssen… generell ist es mir einfach etwas zu “hipster”…. (oder bin ich einfach langsam zu alt ?!)
Powerlevel-Alternative für die Bash
Es gibt da auch eine Bash-Variante, aber die musste ich erst mal selber kosmetisch bearbeiten und die sieht etwas weniger schick aus…(beim Namen könnte man ja meinen, Powerline Fonts würden verwendet, ist aber nicht so…). Aber “schick” ist auch reine Ansichtssache…. und “getestet” habe ich es etwa ganze 2 Minuten…
Agoster-Bash
Agnoster-Bash scheint ganz passabel für die Bash, zumindest auf den ersten Blick… ist wesentlich weniger umfangreich als Powerlevel9k, jedoch für meine Bedürfnisse komplett ausreichend… Beispielsweise ist hier die rechte Zeile komplett nicht unterstützt, aber das ist mir sowas von egal…
Edit 12.01.:
Fancybash
Es gibt noch eine weitere Bash-Variante, die vielversprechend aussieht, hab’s aber selbst noch nicht getestet: fancybash. Aber warum alle Datum, Zeit und sonstiges in jeder Shell sehen wollen, ist (und bleibt) mir schleierhaft. Vorallem wenn man einen tiling window manager verwendet und etliche terminals offen hat, was bringt das ganze ?! Generell gefällt mir fancybash aber sowieso nicht so…
Edit 07.04.:
Powerline-Shell
Powerline-Shell scheint die echte Alternative für Powerlevel9k in Bash zu bieten. Ist aber nicht nur bash, kann bei Bedarf auch für zsh, tcsh oder fish verwendet werden. Ich bin das ganze grad ein bisschen am testen, glaube aber, dass ich hier bleiben werde. Agnoster ist eher minimalistisch (was ich ja auch sehr gern mag), hier sind schon etwas mehr Optionen verfügbar. Muss nur noch die Farben meinen Wünschen entsprechend anpassen (defaults gefallen mir nicht wirklich):
Symbole:
Die basics sind recht schnell angepasst – dazu erstellt man erst mal ein “basic” configuration file
powerline-shell --generate-config > ~/.powerline-shell.json
Dieses File kann man dann entsprechend anpassen (ich will z.B. keinen Usernamen und Hostnamen in der Shell haben, macht das ganze schon etwas kürzer…
Edit 08.04.:
Powerline
Das ganze geht auch einfacher mit dem Debian-Package powerline – hier sind bereits themes für bash, tmux, vim etc. enthalten, habs aber noch nicht genauer angeschaut. Das ganze überschneidet sich auch etwas mit vim-airline. Dokumentation ist recht umfangreich vorhanden.
1 thought on “bash vi-mode / zsh ?”
bash vi-mode / zsh ? http://blog.datentraeger.li/?p=800
Comments are closed.