Unsere Arbeit ist von Natur aus repetitiv. Ganz gleich, ob wir die gleiche kleine Änderung an verschiedenen Stellen vornehmen oder ob wir uns zwischen ähnlichen Bereichen eines Dokuments bewegen – wir wiederholen viele Aktionen. Alles, was einen wiederholungslastigen Arbeitsablauf erleichtern kann, wird uns die Zeit vielfach wieder einspielen.
Vim ist für Wiederholungen optimiert. Seine Effizienz basiert darauf, wie er die von uns zuletzt ausgeführten Aktionen festhält. Die letzte Änderung können wir jederzeit mit einer einzigen Tastenaktion erneut durchführen lassen. So mächtig das auch klingt – es ist nutzlos, wenn wir nicht lernen, unsere Aktionen so zu gestalten, dass sie, wenn sie erneut abgerufen werden, eine sinnvolle Arbeitseinheit darstellen. Dieses Konzept zu beherrschen ist der Schlüssel für eine effektive Arbeit mit Vim.
Der Punktbefehl ist unser Ausgangspunkt. Dieser scheinbar so einfache Befehl ist das vielseitigste Werkzeug in unserem Werkzeugkasten. Dass man ihn versteht, ist der erste Schritt zur Vim?Meisterschaft. Wir werden eine Handvoll einfacher Textbearbeitungsaufgaben durchgehen, die mit dem Punktbefehl sehr rasch durchgeführt werden können. Obgleich alle Aufgaben ganz unterschiedlich aussehen, sind die Lösungen fast immer ähnlich. Wir werden eine optimale Bearbeitungsformel suchen, die nur eine einzige Tastenaktion zur Navigation und zur nächsten Ausführung verlangt.
Der Befehl x
löscht das Zeichen unter dem Cursor. Wenn wir den Punktbefehl in diesem Kontext nutzen, weist »letzte Veränderung wiederholen« Vim an, das Zeichen unter dem Cursor zu löschen:
Tastenaktionen | Pufferinhalt |
{Ausgangszustand}
| Z eile eins Zeile zwei Zeile drei Zeile vier |
x
| e ile eins Zeile zwei Zeile drei Zeile vier |
.
| i le eins Zeile zwei Zeile drei Zeile vier |
...
| eins Zeile zwei Zeile drei Zeile vier |
Wir können die Datei wieder in ihren ursprünglichen Zustand versetzen, indem wir mehrfach die Taste u
drücken, um die Änderungen rückgängig zu machen.
Der Befehl dd
führt ebenfalls eine Löschoperation durch, wirkt sich aber auf eine Zeile als Ganzes aus. Wenn wir den Punktbefehl nach dd
anwenden, weist »letzte Veränderung wiederholen« Vim an, die aktuelle Zeile zu löschen:
Tastenaktionen | Pufferinhalt |
{Ausgangszustand}
| Z eile eins Zeile zwei Zeile drei Zeile vier |
dd
| Z eile zwei Zeile drei Zeile vier |
Der Befehl >G
schließlich erhöht den Texteinzug ab der aktuellen Zeile und bis ans Ende der Datei. Lassen wir auf diesen Befehl den Punktbefehl folgen, sagt »letzte Veränderung wiederholen« Vim, dass der Einzug von der aktuellen Position an bis ans Ende der Datei erhöht werden soll. In diesem Beispiel befindet sich der Cursor zu Anfang auf der zweiten Zeile, damit der Unterschied besser sichtbar wird.
Tastenaktionen | Pufferinhalt |
{Ausgangszustand}
| Zeile eins Z eile zwei Zeile drei Zeile vier |
>G
| Zeile eins Z eile zwei Zeile drei Zeile vier |
j
| Zeile eins Zeile zwei Z eile drei Zeile vier |
.
| Zeile eins Zeile zwei Z eile drei Zeile vier |
j.
| Zeile eins Zeile zwei Zeile drei Z eile vier |
Die Befehle x
, dd
und >
werden alle aus dem normalen Modus heraus ausgeführt, aber Veränderungen werden auch dann vorgenommen, wenn man in den Einfügemodus wechselt. Von dem Augenblick an, zu dem wir in den Einfügemodus wechseln (beispielsweise, indem wir i
drücken), bis wir in den normalen Modus zurückkehren (indem wir <Esc>
drücken), zeichnet Vim alle Tastenaktionen auf. Haben wir eine Änderung wie die folgende vorgenommen, spielt der Punktbefehl diese wieder ab (ein Haken dabei wird unter Eine Navigation im Einfügemodus setzt Änderungen zurück erläutert).
Später werden wir in Kapitel 15 erfahren, dass Vim eine beliebige Anzahl von Tastenaktionen für die spätere Wiedergabe aufzeichnen kann. Diese Einrichtung ermöglicht es uns, unsere repetitivsten Arbeitsabläufe festzuhalten und später auf Tastendruck wieder abzuspielen. Doch wir können den Punktbefehl als eine Art Mini?Makro oder, falls Ihnen das besser gefallen sollte, als »Mikro?Makro« betrachten.
Im gesamten Kapitel werden wir eine Reihe von Anwendungen des Punktbefehls sehen. Außerdem werden wir in „Wiederholbare Änderungen konstruieren“ und „Ziehen Sie Operatoren wenn möglich visuellen Befehlen vor“ einige praxiserprobte Techniken für den Einsatz des Punktbefehls kennenlernen.
Wir müssen ans Ende aller Zeilen ein Semikolon anhängen. Dazu müssen wir den Cursor ans Ende der jeweiligen Zeile bewegen und in den Einfügemodus wechseln, um die Änderung vorzunehmen. Der Befehl $
führt für uns die Bewegung aus, und dann können wir a
;<Esc>
drücken, um die Änderung vorzunehmen.
Wir könnten diese Aufgabe erledigen, indem wir die gleiche Folge von Tastenaktionen für die nächsten beiden Zeilen durchführen, aber das wäre nicht sonderlich raffiniert. Da der Punktbefehl die letzte Änderung wiederholt, könnten wir einfach zweimal j$.
nutzen. Eine Tastenaktion (.
) spart uns drei (a
;
<Esc>
). Das ist eine kleine Einsparung, aber diese Einsparungen häufen sich, wenn die Operation öfter vorgenommen werden muss.
Aber wir sollten noch einen genaueren Blick auf dieses Muster werfen: j$.
. Der Befehl j
bewegt den Cursor eine Zeile nach unten, und dann bewegt der Befehl $
ihn ans Ende der Zeile. Wir benötigen zwei Tastenaktionen, nur um den Cursor in Position für den Einsatz des Punktbefehls zu bringen. Spüren Sie nicht auch, dass es hier Spielraum für Verbesserungen geben muss?
Während der Befehl a
dafür sorgt, dass eingegebener Text hinter der aktuellen Cursorposition angehängt wird, hängt der Befehl A
Text ans Ende der aktuellen Zeile an. Es spielt keine Rolle, wo sich der Cursor aktuell befindet. Wenn Sie A
betätigen, wird in den Einfügemodus gewechselt und der Cursor ans Ende der Zeile verschoben. Kurz gesagt, A
kombiniert $a
zu einer einzigen Tastenaktion. In Kapitel Zwei für den Preis von einem, unten sehen Sie, dass Vim eine Reihe praktischer zusammengesetzter Befehle besitzt.
Zwei für den Preis von einem
Man könnte sagen, dass der Befehl A
zwei Aktionen ($a
) zu einer einzigen Tastenaktion kombiniert. Das ist nicht der einzige Befehl, der das macht. Viele der Ein?Tasten-Befehle von Vim können als kondensierte Version von zwei oder mehr Befehlen betrachtet werden. Die Tabelle unten bietet eine Aufstellung einiger Beispiele dafür. Fallen Ihnen andere Dinge auf, die diese alle gemeinsam haben?
Zusammengesetzter Befehl | Äquivalente... |