Schnelleinführung in den Texteditor viDer vi-Editor beim bearbeiten einer Konfigurationsdatei

Schnelleinführung in den Texteditor vi

Der Texteditor vi gehört zum Urgestein der meisten Linux- bzw. Unix-Distributionen und ist daher so gut wie immer automatisch an Board. Insbesondere viele Anfänger meiden ihn jedoch, da seine Bedienung für ungeübte auf den ersten Blick kompliziert sowie verwirrend zugleich erscheint. Wer auf verschiedenen Systemen unterwegs ist, wird aber früher oder später nicht mehr um ihn herum kommen: Besonders auf kleinen, abgespeckten Distributionen wie sie auf NAS-Systemen oder Firewalls zum Einsatz kommen sind vermeindlich einfacherere Editoren wie nano oft nicht verfügbar. Dieser Artikel zeigt, dass sich vi mit ein wenig Vorwissen und Übung auch von Einsteigern passabel bedienen lässt.

Öffnen von Dateien

Das grundsätzliche Syntax ist eigentlich selbsterklärend und unterscheidet sich von Editoren wie nano wenig:

vi foo

Öffnet die Datei foo, wobei diese bei Nichtexistenz automatisch erzeugt und in das Dateisystem geschrieben wird, wenn man sie speichert.

Die Befehlsmodi

Öffnet man auf diesem Wege eine Datei und möchte dessen Textinhalt bearbeiten, tut sich jedoch nichts: Die Eingaben werden schlicht ignoriert. Dies liegt daran, dass vi drei verschiedene Arbeitsmodi besitzt und in nur einem davon der Datei-Inhalt verändert werden kann. Es ist daher unerlässlich, diese drei Modi zu kennen:

Die Infografik verwendet Icons des Autors Freepik von www.flaticon.com, welche unter der CC BY 3.0 lizenziert sind.

Der Editor startet im Befehls-Modus, hier kann mit folgenden 4 Tasten navigiert werden:

Taste Bedeutung
H Ein Zeichen nach links
L Ein Zeichen nach rechts
J Eine Zeile nach unten
K Eine Zeile nach oben

Um Text bearbeiten oder einfügen zu können, muss in den Einfüge-Modus gewechselt werden. Meistens benutzt man dafür die Taste i, hierbei wird der geschriebene Text vor der aktuellen Cursorposition angefügt. Heutzutage zeigen alle aktuelleren vi-Versionen links unten den aktuellen Modus an, sofern dieser gewechselt wurde:

Vi zeigt den derzeit aktiven Modus an
Vi zeigt den derzeit aktiven Modus an

Hat man die gewünschten Änderungen vorgenommen und möchte den Editor beenden, so funktioniert dies ausschließlich im Befehls- oder Kommandozeilen-Modus. Zuerst muss der Einfüge-Modus durch drücken von ESC verlassen werden, nun befinden wir uns im Befehls-Modus. Von dort aus kann man mit dem Shortcut Z Z vi dazu anweisen, die vorgenommenen Änderungen zu speichern und sich anschließend zu beenden. Zu beachten ist, dass beide Z groß geschrieben werden müssen – also mit Shift-Taste drücken.

Aber was ist wenn man zwar (versehentlich) Änderungen vorgenommen hat, diese aber nicht speichern möchte? Hier hilft uns der Kommandozeilen-Modus weiter, der durch Eingabe eines : gestartet wird. Im folgenden werden die für den Anfang wichtigsten Befehle aufgelistet:

Befehl Bedeutung
w Speichert die Änderungen (write)
q Beendet vi (quit)
q! Beendet vi und ignoriert vorgenommene Änderungen

Ein großer Vorteil von vi gegenüber anderen Editoren ist, dass die Befehle einfach aneinandergereiht und so kombiniert werden können, ohne dass dadurch eine weitere Tastenkombination gedrückt werden muss. Beispielsweise kann man durch Eingabe von wq die Änderungen speichern und vi beenden. Dies hat den selben Effekt wie Z Z im Befehls-Modus.

Warum vi?

Neben dem Zwang, dass Editoren wie nano nicht auf jedem System ohne weiteres installiert werden können oder dürfen, gibt es noch andere Gründe die für den Einsatz von vi sprechen: Der Editor ist sehr mächtig und umfangreich, es gibt kaum etwas das er nicht kann. Zugegebenermaßen ist die Bedienung anfangs sehr gewöhnungsbedürftig, besonders wenn man zuvor mit nano oder vergleichbaren Editoren gearbeitet hat. Aber wenn man vi eine Zeit lang einsetzt und dementsprechend routiniert geworden ist, kann in Kombination mit dem enormen Funktionsfumfang sehr effizient gearbeitet werden.

Ein Beispiel:
Es sollen Änderungen an der Konfigurationsdatei eines Webservers oder anderen Dienstes vorgenommen werden. Mehrere Zeilen müssen entfernt und durch die neuen ersetzt werden. Mit vi eine leichte Aufgabe: Man öffnet die Datei und blendet mit dem Befehl :set number die Zeilennummern ein, sofern man dies nicht bereits in der Konfiguration von vi entsprechend eingestellt hat. Nun grenzt man den zu löschenden Bereich anhand der Zeilennummern ein und löscht ihn durch Eingabe von :n,md wobei n für die erste und m für die letzte Zeile steht. Der Befehl :5,15d würde den Inhalt von und einschließlich mit Zeile 5 bis 15 löschen. Andere Editoren bieten eine solche Funktion teilweise gar nicht oder nur über Umwege, ein etwas geübter vi-Nutzer erledigt diese Aufgabe in wenigen Sekunden.

Selbstverständlich kann vi noch viel mehr, den gesamten Funktionsumfang kann man in der Dokumentation nachlesen. Dieser Artikel soll lediglich einen Schnelleinstieg für Neulinge bieten, die lediglich eine Datei bearbeiten möchten, aber von vi buchstäblich erschlagen wurden.

Leave a Reply