
Ich arbeite ja viel in der Bash und nutze auch vim für die Textbearbeitung. Irgendwann kam mir die Idee, die Bash selbst mit vi-Befehlen zu steuern. Das ist tatsächlich möglich und spart eine Menge Zeit, wenn man die Tastenkombinationen erst einmal verinnerlicht hat.
Konfiguration
Bash kann mit vi-Befehlen gesteuert werden. Dazu muss lediglich entweder im Benutzerverzeichnis in die Datei .bashrc oder systemweit in die /etc/bash.bashrc eine Zeile eingetragen werden.
# Aktivieren des VI Modus -> Energie !
set -o vi
Konfiguration aktivieren
In der nächsten Session, zum Beispiel bei einem neuen Login, oder durch das Ausführen des Befehls source ~/.bashrc oder source /etc/bash.bashrc wird diese neue Einstellung aktiv.
Alternativ kann statt dem Befehl source auch der Befehl exec benutzt werden. Dieser ersetzt die aktuelle Shell mit einer komplett neuen Shell. Die alte Shell bleibt dann solange im Hintergrund, bis die neue Shell beendet wurde. Wie so eine Matrjoschka-Puppe.
vi-Modus aktivieren
Der vi-Modus wird aktiv, indem die ESC-Taste gedrückt wird. Und raus geht es wieder, indem i für Insert gedrückt wird. Oder es passiert automatisch, je nachdem welcher Befehl benutzt wurde, der dann automatisch in den INSERT- oder den APPEND-Modus wechselt. Also zurück in die alte Bash.
Das war schon alles. Aber hier noch zusätzlich ein paar nützliche Tastenkombinationen bei aktiviertem vi-Modus mit ESC als Bonus.
Navigation
0oder^^springt an den Anfang der Zeile$springt an das Ende der Zeilewspringt zum nächsten Wortbspringt ein Wort zurück (back)kgeht einen Eintrag zurück in der Bash-History (analog die Pfeil-runter-Taste in der Bash)lgeht einen Eintrag vorwärts in der Bash-History (analog die Pfeil-hoch-Taste in der Bash)
Suche
f ZEICHENsucht das nächste Vorkommen von ZEICHEN (ohne Eingabe des Leerzeichens)F ZEICHENsucht das vorherige Vorkommen von ZEICHEN (ohne Eingabe des Leerzeichens);wiederholt die vorherige Suche, vorwärts oder eben auch rückwärts
Editieren
xlöscht das Zeichen unter dem CursorXlöscht das Zeichen links vom CursorIspringt an den Anfang der Zeile und wechselt zum INSERT-Modus (und beendet den vi-Modus)Aspringt an das Ende der Zeile und wechselt in den APPEND-Modus (und beendet den vi-Modus)cclöscht die komplette Zeile und wechselt in den INSERT-ModusClöscht den Rest der Zeile nach rechts und wechselt in den INSERT-Moduscwlöscht ab der aktuellen Cursorposition bis zum Wortende und wechselt in den INSERT-Modusciwlöscht das Wort unter der aktuellen Cursorposition und wechselt in den INSERT-Modusci3wlöscht ab dem aktuellen Wort (inklusive) drei Wörter ab der aktuellen Cursorposition und wechselt in den INSERT-Moduseaspringt zum Ende des aktuellen Wortes und wechselt in den APPEND-Modusrersetzt exakt nur das Zeichen über dem Cursor (bleibt im vi-Modus)Rwechselt in den Überschreibe-Modus~schaltet die Gross- und Kleinschreibung des Zeichens über dem Cursor umxplöscht das aktuelle Zeichen, rückt alle nachfolgenden Zeichen eines nach links und fügt das gelöschte Zeichen nach dem einen nachgerückten Zeichen wieder ein. Beispiel mit dem Cursor auf demewird ausheirwirdhier
Löschen
ddoderDlöscht die komplette Zeiledwlöscht ab der aktuellen Cursorposition bis zum Wortendebdwspringt an den Anfang des Wortes und löscht dann das ganze Wortbd4wspringt an den Anfang des Wortes und löscht dann 4 ganze Wörter (Leerzeichen zählen als Wörter)xlöscht das Zeichen unter dem CursorXlöscht das Zeichen links vom Cursorcclöscht die komplette Zeile und wechselt in den INSERT-ModusClöscht den Rest der Zeile nach rechts und wechselt in den INSERT-Moduscwlöscht ab der aktuellen Cursorposition bis zum Wortende und wechselt in den INSERT-Modusciwlöscht das Wort unter der aktuellen Cursorposition und wechselt in den INSERT-Modusci3wlöscht ab dem aktuellen Wort (inklusive) drei Wörter ab der aktuellen Cursorposition und wechselt in den INSERT-Modus
Copy und Paste
ykopiert das aktuelle Wort unter dem Cursory3wkopiert ab der aktuellen Cursorposition 3 Wörter (Leerzeichen werden als Wörter gezählt)by3wspringt an den Wortanfang und kopiert ab der aktuellen Cursorposition 3 Wörter (Leerzeichen werden als Wörter gezählt)Ykopiert alles von der aktuellen Position bis zum Zeilenendepfügt das zuvor Kopierte ab der aktuellen Cursorposition einPfügt das zuvor Kopierte vor der aktuellen Cursorposition ein
Quellen
Die Bash und vim sind als Open-Source-Software verfügbar.
- Bash: https://www.gnu.org/software/bash/
- vim: https://www.vim.org/
- Bash-Dokumentation: https://www.gnu.org/software/bash/manual/
- vim-Dokumentation: https://www.vim.org/docs.php