{"id":800,"date":"2017-12-25T03:01:50","date_gmt":"2017-12-25T03:01:50","guid":{"rendered":"http:\/\/blog.datentraeger.li\/?p=800"},"modified":"2018-06-13T07:59:09","modified_gmt":"2018-06-13T07:59:09","slug":"bash-vi-mode-zsh","status":"publish","type":"post","link":"https:\/\/blog.datentraeger.li\/?p=800","title":{"rendered":"bash vi-mode \/ zsh ?"},"content":{"rendered":"<h2>Bash vi-Mode<\/h2>\n<p>und dann noch so einfach, einfach mit folgender Erg\u00e4nzung in .bashrc ?<\/p>\n<pre class=\"lang:default decode:true\">set -o vi<\/pre>\n<p>ja, und das klappt auch tadellos (zb. b \/ w, etc). Eigentlich doch recht angenehm, wenn man sowieso sonst mit vim arbeitet&#8230;<\/p>\n<p>Hier verl\u00e4sst man dann, wie in vi, mit esc den Input-Mode bei der Eingabe von normalen Commands&#8230;.<\/p>\n<p>Da sitzt man doch t\u00e4glich stundenlang vor Terminals und findet sowas per Zufall mal so <a href=\"https:\/\/sanctum.geek.nz\/arabesque\/vi-mode-in-bash\/\" target=\"_blank\" rel=\"noopener\">nebenbei raus<\/a>&#8230; und vorallem geht das ja nicht nur in bash, wenn man&#8217;s ins .inputrc schmeisst (was ich noch nicht selbst probiert hab).<\/p>\n<pre class=\"lang:default decode:true\">set editing-mode vi<\/pre>\n<p>Einige Basic-Features, die man dadurch erreicht:<code><\/code><\/p>\n<ul>\n<li><strong>^<\/strong> &#8211; zum Start der Zeile<\/li>\n<li><strong>$<\/strong> &#8211; zum Ende der Zeile<\/li>\n<li><strong>b<\/strong> &#8211; ein Wort zur\u00fcck<\/li>\n<li><strong>w<\/strong> &#8211; ein Wort vorw\u00e4rts<\/li>\n<li><strong>e<\/strong> &#8211; zum Ende des n\u00e4chsten Worts<\/li>\n<li><strong>v<\/strong> &#8211; visual Mode; \u00f6ffnet $Editor und mehrere Zeilen k\u00f6nnen geschrieben werden<\/li>\n<li>L\u00f6schen\/yanking\/einf\u00fcgen wie unter vim<\/li>\n<li>history kann mit j\/k durchgescrollt werden<\/li>\n<\/ul>\n<p>Das ganze l\u00e4sst sich auch noch &#8220;weiterausbauen&#8221;<\/p>\n<pre class=\"lang:default decode:true \">bind 'set show-mode-in-prompt on<\/pre>\n<p>Damit wird beim Prompt ein (cmd) oder (ins) angezeigt, je nach Modus.<\/p>\n<p>Das l\u00e4sst sich jedoch auch nach eigenem Gusto anpassen, indem man den String definiert<\/p>\n<pre class=\"lang:default decode:true \">bind 'set vi-ins-mode-string [i]'\r\nbind 'set vi-cmd-mode-string [n]'\r\n<\/pre>\n<p>Hiermit w\u00fcrde anstatt (cmd) und (ins) einfach ein [n] oder [i] anzeigt.<\/p>\n<p>Mir pers\u00f6nlich gef\u00e4llt aber diese Variante am besten<\/p>\n<pre class=\"lang:default decode:true \">bind 'set vi-ins-mode-string \\1\\e[6 q\\2'\r\nbind 'set vi-cmd-mode-string \\1\\e[2 q\\2'<\/pre>\n<p>Dies \u00e4ndert lediglich den Cursor, so wie etwa auch in vim selbst. Das Prompt bleibt unver\u00e4ndert.<\/p>\n<p>Die Codes k\u00f6nnen auch angepasst werden, indem die Nummer nach <code>\\e[<\/code> angepasst wird (siehe <a href=\"https:\/\/stackoverflow.com\/questions\/7888387\/the-way-to-distinguish-command-mode-and-insert-mode-in-bashs-vi-command-line-ed\" target=\"_blank\" rel=\"noopener\">Stackoverflow-Thread<\/a>):<\/p>\n<pre class=\"lang:default decode:true \">Ps = 0  -&gt; blinking block.\r\nPs = 1  -&gt; blinking block (default).\r\nPs = 2  -&gt; steady block.\r\nPs = 3  -&gt; blinking underline.\r\nPs = 4  -&gt; steady underline.\r\nPs = 5  -&gt; blinking bar (xterm).\r\nPs = 6  -&gt; steady bar (xterm).<\/pre>\n<h2>zsh \/ Powerlevel<\/h2>\n<p>naja, irgendwie hab ich das Gef\u00fchl, 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&#8217;s mir trotzdem. Und ich muss gestehen, wenn man in einem git-Repo ist, dann ist das ganze schon recht angenehm&#8230;. (ansonsten sehe ich den Sinn jetzt nicht so sehr, bis jetzt zumindest).<\/p>\n<p>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&#8230;.irgendwie viel zu farbig&#8230; (einen git status und so muss ich ja auch hier trotzdem machen, wenn ich mehr wissen m\u00f6chte).<\/p>\n<p><a href=\"https:\/\/github.com\/bhilburn\/powerlevel9k\" target=\"_blank\" rel=\"noopener\">Powerlevel9k<\/a> ist aber recht anpassbar, wie man das ganze dargestellt haben m\u00f6chte.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-806\" src=\"http:\/\/blog.datentraeger.li\/wp-content\/uploads\/2017\/12\/2017-12-25-022526_562x182_scrot.png\" alt=\"\" width=\"562\" height=\"182\" srcset=\"https:\/\/blog.datentraeger.li\/wp-content\/uploads\/2017\/12\/2017-12-25-022526_562x182_scrot.png 562w, https:\/\/blog.datentraeger.li\/wp-content\/uploads\/2017\/12\/2017-12-25-022526_562x182_scrot-300x97.png 300w\" sizes=\"auto, (max-width: 562px) 100vw, 562px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Auf <a href=\"https:\/\/terminalsare.sexy\/\" target=\"_blank\" rel=\"noopener\">terminalsare.sexy<\/a>\u00a0gibt es etliche Varianten, die versuchen git in die Bash (und zsh) zu integrieren. Hier hat es bestimmt noch einige sehenswerte Ans\u00e4tze mit dabei.<\/p>\n<p>Zudem wurde vor einiger Zeit einiges Powerline-Zeugs grad auch <a href=\"https:\/\/jonathancarter.org\/2017\/11\/20\/new-powerline-goodies-in-debian\/\" target=\"_blank\" rel=\"noopener\">ins Debian-Repo<\/a> aufgenommen (nat\u00fcrlich genau nachdem ich alles (also eigentlich nur die Powerline-Fonts und vim-airline) in ein kleines Shellscript gebastelt hab&#8230;d&#8217;oh&#8230; die Powerline Fonts ben\u00f6tigte ich derzeit aber nur f\u00fcr die Symbole in meinen i3-Workspaces).<\/p>\n<p>Heisst das jetzt, dass ich aus reinen Bequemlichkeitsgr\u00fcnden 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\u00e4nger damit arbeiten m\u00fcssen&#8230; generell ist es mir einfach etwas zu &#8220;hipster&#8221;&#8230;. (oder bin ich einfach langsam zu alt ?!)<\/p>\n<h3>Powerlevel-Alternative f\u00fcr die Bash<\/h3>\n<p><del>Es gibt da auch eine <a href=\"https:\/\/github.com\/riobard\/bash-powerline\" target=\"_blank\" rel=\"noopener\">Bash-Variante<\/a>, aber die musste ich erst mal selber kosmetisch bearbeiten und die sieht etwas weniger schick aus&#8230;(beim Namen k\u00f6nnte man ja meinen, Powerline Fonts w\u00fcrden verwendet, ist aber nicht so&#8230;). Aber &#8220;schick&#8221; ist auch reine Ansichtssache&#8230;. und &#8220;getestet&#8221; habe ich es etwa ganze 2 Minuten&#8230;<\/del><\/p>\n<h4>Agoster-Bash<\/h4>\n<p><a href=\"https:\/\/github.com\/speedenator\/agnoster-bash\" target=\"_blank\" rel=\"noopener\">Agnoster-Bash<\/a>\u00a0scheint ganz passabel f\u00fcr die Bash, zumindest auf den ersten Blick&#8230; ist wesentlich weniger umfangreich als Powerlevel9k, jedoch f\u00fcr meine Bed\u00fcrfnisse komplett ausreichend&#8230; Beispielsweise ist hier die rechte Zeile komplett nicht unterst\u00fctzt, aber das ist mir sowas von egal&#8230;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-837\" src=\"http:\/\/blog.datentraeger.li\/wp-content\/uploads\/2017\/12\/agnoster-bash.png\" alt=\"\" width=\"361\" height=\"38\" srcset=\"https:\/\/blog.datentraeger.li\/wp-content\/uploads\/2017\/12\/agnoster-bash.png 361w, https:\/\/blog.datentraeger.li\/wp-content\/uploads\/2017\/12\/agnoster-bash-300x32.png 300w\" sizes=\"auto, (max-width: 361px) 100vw, 361px\" \/><\/p>\n<p><em>Edit 12.01.:<\/em><\/p>\n<h4>Fancybash<\/h4>\n<p>Es gibt noch eine weitere Bash-Variante, die vielversprechend aussieht, hab&#8217;s aber selbst noch nicht getestet: <a href=\"https:\/\/github.com\/unic0rn\/fancybash\" target=\"_blank\" rel=\"noopener\">fancybash<\/a>. 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\u00e4llt mir fancybash aber sowieso nicht so&#8230;<\/p>\n<p><em>Edit 07.04.:<\/em><\/p>\n<h4>Powerline-Shell<\/h4>\n<p><a href=\"https:\/\/github.com\/b-ryan\/powerline-shell#bash\" target=\"_blank\" rel=\"noopener\">Powerline-Shell<\/a> scheint die echte Alternative f\u00fcr Powerlevel9k in Bash zu bieten. Ist aber nicht nur bash, kann bei Bedarf auch f\u00fcr 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\u00fcgbar. Muss nur noch die Farben meinen W\u00fcnschen entsprechend anpassen (defaults gefallen mir nicht wirklich):<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1450\" src=\"http:\/\/blog.datentraeger.li\/wp-content\/uploads\/2017\/12\/powerline-bash.png\" alt=\"\" width=\"701\" height=\"37\" srcset=\"https:\/\/blog.datentraeger.li\/wp-content\/uploads\/2017\/12\/powerline-bash.png 701w, https:\/\/blog.datentraeger.li\/wp-content\/uploads\/2017\/12\/powerline-bash-300x16.png 300w\" sizes=\"auto, (max-width: 701px) 100vw, 701px\" \/><\/p>\n<p>Symbole:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1452\" src=\"http:\/\/blog.datentraeger.li\/wp-content\/uploads\/2017\/12\/powerline-bash-symbols.png\" alt=\"\" width=\"445\" height=\"108\" srcset=\"https:\/\/blog.datentraeger.li\/wp-content\/uploads\/2017\/12\/powerline-bash-symbols.png 445w, https:\/\/blog.datentraeger.li\/wp-content\/uploads\/2017\/12\/powerline-bash-symbols-300x73.png 300w\" sizes=\"auto, (max-width: 445px) 100vw, 445px\" \/><\/p>\n<p>Die basics sind recht schnell angepasst &#8211; dazu erstellt man erst mal ein &#8220;basic&#8221; configuration file<\/p>\n<pre class=\"lang:default decode:true \">powerline-shell --generate-config &gt; ~\/.powerline-shell.json<\/pre>\n<p>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\u00fcrzer&#8230;<\/p>\n<p><em>Edit 08.04.:<\/em><\/p>\n<h4>Powerline<\/h4>\n<p>Das ganze geht auch einfacher mit dem Debian-Package <a href=\"https:\/\/packages.debian.org\/stretch\/powerline\" target=\"_blank\" rel=\"noopener\">powerline<\/a> &#8211; hier sind bereits themes f\u00fcr bash, tmux, vim etc. enthalten, habs aber noch nicht genauer angeschaut. Das ganze \u00fcberschneidet sich auch etwas mit vim-airline. <a href=\"https:\/\/powerline.readthedocs.io\/en\/latest\/\" target=\"_blank\" rel=\"noopener\">Dokumentation<\/a> ist recht umfangreich vorhanden.<\/p>\n","protected":false},"excerpt":{"rendered":"Bash vi-Mode und dann noch so einfach, einfach mit folgender Erg\u00e4nzung 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&#8230; Hier verl\u00e4sst man dann, wie in vi, mit esc den Input-Mode&hellip;\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[36,4,19,51],"tags":[],"class_list":["post-800","post","type-post","status-publish","format-standard","hentry","category-cli","category-debiangnu-linux","category-git","category-vim"],"_links":{"self":[{"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=\/wp\/v2\/posts\/800","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=800"}],"version-history":[{"count":45,"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=\/wp\/v2\/posts\/800\/revisions"}],"predecessor-version":[{"id":834,"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=\/wp\/v2\/posts\/800\/revisions\/834"}],"wp:attachment":[{"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=800"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=800"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=800"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}