In die Tasten gehauen
Volle Kontrolle über Programme durch die Tastatur
Ein Programm flink mit der Tastatur zu bedienen, erfordert nicht unbedingt, dass Sie schnell tippen. Es liegt viel mehr an der Software selbst, ein sinnvolles und intuitives Bedienkonzept bereitzustellen, das es erlaubt, jede Aktion mit nur wenigen Tastendrücken anzustoßen – wie beim Paradebeispiel, dem Editor Vi [1].
Diverse Programme haben die Philosophie des Klassikers kopiert. In einigen Fällen liegt der Grund dafür in der Tatsache, dass die Programmierer selbst Vi oder den komfortableren Vim nutzen. Für sie fühlt sich das eigene Programm konsequenterweise von vorne herein praktisch und intuitiv an. Einmal erlerntes Wissen nutzt also in anderen Fällen – und für Außenstehende sieht es oft so aus, als passiere alles von Geisterhand.
Software, die die komplett freie Konfiguration der Tastenbelegung erlaubt, bietet darüber hinaus die Möglichkeit, eine eigene an Vi angelehnte Konfigurationsdatei zu schreiben oder eine solche im Netz zu suchen und anzupassen.
Besonders bei umfangreichen Programmen mit grafischer Oberfläche zeichnete sich in den vergangenen Jahren ein Trend in Richtung Vi ab: Plugins ermöglichten es, die die Funktionalität von Vi so gut wie möglich emulieren. Nicht nur für Eclipse oder andere Java-IDEs existieren solche Addons, sondern auch für die Browser Chrome und Firefox.
Bash
Je tiefer Sie in Linux einsteigen, desto mehr kommen Sie mit der Shell oder Kommandozeile in Kontakt. Erfahrene Anwender verwenden bisweilen kaum grafische Programme, sondern erledigen alles Mögliche im Terminal – schlicht weil es einfach viel schneller geht.
Auch die Bash unterstützt Vi-Tastenkürzel. Zwar sind Sie beim Editieren in der Regel auf eine Zeile beschränkt, doch selbst da helfen Tastenfolgen wie [D],[4],[W] (drei Wörter löschen) oder [C],[0] (bis zum Anfang der Zeile ausschneiden). Mit dem Kommando set -o vi schalten Sie die Bash in den Vi-Modus, per Default befinden Sie sich immer im Insert-Modus. Um keinen Platz zu verschwenden, gibt es keine Statuszeile. Sie sehen also nichts, wenn Sie per [Esc] in den Kommandomodus wechseln.
Das obige Kommando wirkt allerdings nur auf die laufende Instanz der Shell. Gefällt Ihnen das Verhalten und wollen Sie es permanent einrichten, dann übernehmen Sie die Zeile in die Datei ~/.bashrc. Auch für Alternativen zur Bash, wie zum Beispiel die Z-Shell, existieren entsprechende Befehle.
Readline
Heutzutage nutzen Sie ein Terminal in der Regel als Fenster in einer grafischen Umgebung – früher verbargen sich hinter dem Begriff echte Bildschirme, welche die eingegebenen Zeichen direkt anzeigten. Es bedurfte einer Menge sogenannter Escape-Sequenzen, um Aktionen wie Verschiebe den Cursor oder Schreibe ab jetzt in Rot zu starten.
Die heutigen Terminal-Emulatoren wie das Xterm übersetzen Tastendrücke in entsprechende Escape-Sequenzen. Sie sehen diese, wenn Sie [Strg]+[V] drücken, gefolgt von der speziellen Taste, zum Beispiel einer Pfeiltaste.
Programme, die Text im Terminal entgegen nehmen, müssen diese Escape-Sequenzen nun in ihre ursprüngliche Bedeutung übersetzen. Um nicht jedem Programmierer diese Aufgabe von neuem aufzubürden, gibt es die Bibliothek libreadline, die genau dies tut. Abgesehen davon bietet sie einen Vi-artigen Modus an.
Damit verfügen diverse Applikationen automatisch über einen Vi-Modus – selbst wenn der Autor das vielleicht nie im Sinn hatte oder nicht einmal weiß. Software, wie der Rechner bc, die interaktive Ruby-Kommandozeile irb oder der MySQL-Client mysql verwenden Readline – und haben daher einen Vi-Modus.
Drücken Sie innerhalb eines Programms, das die Readline-Bibliothek verwendet, [Strg]+[Alt]+[J], dann schaltet Readline in den Vi-Modus. Ob das geklappt hat, überprüfen Sie am einfachsten, indem Sie anschließend via [Esc] in den Kommando-Modus springen und versuchen, mit [H] oder [L] nach links oder rechts zu navigieren.
Wollen Sie die Einstellung permanent und für alle Readline-Programme einrichten, tragen Sie den Befehl set editing-mode vi in die Datei ~/.inputrc ein.
Darüber hinaus bietet das Tool rlwrap die Möglichkeit, ein zeilenbasiertes Programm, das nichts von Readline weiß, trotzdem mit der Bibliothek zu verwenden. Die Wirkung des kleinen Helfers demonstriert der Einsatz mit dem Skript aus Listing 1.
Listing 1
#!/bin/sh echo -n "Eingabe: " read eingabe echo "Sie haben eingegeben: $eingabe"
Speichern Sie das Skript unter dem Dateinamen eingabe ab und setzen Sie die Rechte so, dass diese ein Ausführen der Programmzeilen erlauben. Dann rufen Sie das Skript via ./eingabe auf. Es liest eine Zeile ein und gibt sie wieder aus. Probieren Sie, mit den Pfeiltasten zu navigieren, und Sie sehen die oben erwähnten Escape-Sequenzen.
Wenn Sie den Aufruf nun via rlwrap verpacken, lernt Ihr Programm wie magisch Readline-Funktionalität: Rufen Sie dafür einfach rlwrap ./eingabe auf. Jetzt haben Sie das selbst geschriebene Programme mit Vi-Funktionalität ausgestattet.



