Home

Sitemap

Auswahlseite

Unix: Kommandoauswahl zum vi- bzw. vim-Editor

Der „vi” ist der bei Unix (dazu gehört auch Linux) im Konsolmodus am häufigsten verwendete Texteditor. Er stammt noch aus der Zeit, als es keine grafische Desktopoberfläche und keine Zeigergeräte (z.B. Maus) gab. Die Bedienung erfolgt ausschließlich mit der Tastatur und ist etwas gewöhnungsbedürftig.

Unter Linux wird statt des vi-Editors, zumeist ohne dass der Benutzer es merkt, der vim-Editor aufgerufen. Der vim- ist eine verbesserte Ausführung des vi-Editors.

Diese Webseite bezieht sich, auch dann wenn „vi” steht, auf „vim” unter Linux.

Der vi kennt zwei Modi: Einen Befehlsmodus und einen Bearbeitungsmodus. Den Bearbeitungsmodus kann man jederzeit durch Drücken der <Escape>-Taste verlassen, um in den Befehlsmodus zu gelangen. Die meisten der Kommandos sind im Befehlsmodus einzugeben. vi unterscheidet Groß- und Kleinschreibung.

Eine andere Aufteilung nennt drei Modi. Hierbei wird der oben erwähnte Befehlsmodus in einen Befehlsmodus und einen erweiterten Modus weiter unterteilt:
  • Befehlsmodus
    In diesem Modus akzeptiert vi bestimmte Tastenkombinationen als Befehle.
  • Einfügemodus
    In diesem Modus wird der Text unmittelbar geschrieben oder bearbeitet bzw. ediert.
  • Erweiterter Modus
    Dieser Modus wird auch Doppelpunktmodus genannt, da dessen Befehle mit einem Doppelpunkt eingeleitet werden. In diesem Modus lassen sich komplexe Aufgaben ausführen. Sogar reguläre Ausdrücke (wie "/^[A-Z][a-z]*") können als Suchbegriff angegeben werden.

Nachfolgend wird die Unterteilung in drei Modi nicht benutzt: Auch der erweiterte Modus wird als Befehlsmodus betrachtet.

Die nachfolgende Tabelle enthält einige der bei vi verwendbaren Kommandos. Mit hochgestellten Anmerkungen in roter Schrift wird auf Besonderheiten hingewiesen:

[zi] Mit einer Zahl vor dem Kommando kann die Anzahl Zeichen, Worte oder Zeilen oder die Nummer der Zeile angegeben werden. Beispielsweise löscht das Kommando 3dw die folgenden drei Worte des Textes.

[esc] Auszuführen im Bearbeitungsmodus. Ein Druck auf die Escape-Taste beendet den Bearbeitungsmodus.

Für einfache Aufgaben benötigt man nur wenige Kommandos. Man muss wissen, wie man Text einfügt, wie man Zeichen löscht, wie man Zeilen verbindet und wie man den Editor vi beendet. Siehe dazu die Übung am Schluss dieser Seite.

vi starten und beenden, Datei lesen, speichern und schließen:
vi /etc/fstabProgrammaufruf von der Konsole aus. Der Parameter (hier /etc/fstab) weist auf die zu bearbeitende Textdatei
:r /etc/fstab Datei in den Editor laden. Der Parameter (hier /etc/fstab) weist auf die zu bearbeitende Textdatei
:q vi beenden. Wurde nach der letzten Textänderung nicht gespeichert, erinnert vi daran.
:q! vi beenden, nicht gespeicherte Änderungen gehen verloren
:w Datei speichern. Als Parameter kann ein Dateiname angegeben werden.
:w! Speichern der Datei erzwingen
:wq oder ZZ Datei speichern und vi beenden
<Strg>z Shell starten; vi wird in Hintergrund geschoben; Rückkehr durch Eingabe von "fg"
Cursor im Text positionieren:
[zi]G ohne Zahl: auf das Dateiende, mit Zahl: auf die angegebene Zeile
0 (null) oder ^ auf den Anfang der Zeile
$ ans Ende der Zeile
b auf den Anfang des vorherigen Wortes
w auf den Anfang des nächsten Wortes
e auf das Ende des nächsten Wortes
h um ein Zeichen nach links. Besser: Taste Pfeil nach links.
j um eine Zeile nach unten. Besser: Taste Pfeil nach unten
k um eine Zeile nach oben. Besser: Taste Pfeil nach oben
l um ein Zeichen nach rechts. Besser: Taste Pfeil nach rechts
<Strg>u um ½ Seite nach oben
<Strg>d um ½ Seite nach unten
L auf die letzte Zeile der Bildschirmausgabe
Text löschen und ändern:
[zi]x Zeichen unter Cursor-Position löschen. Besser: Taste Entf
[zi]X Zeichen links vom Cursor löschen
[zi]r Zeichen unter Cursor-Position ersetzen
[zi]s Zeichen unter Cursor-Position ersetzen und in den Bearbeitungsmodus wechseln
[zi]dd schneidet die aktuelle Zeile aus, d.h. die aktuelle Zeile wird inn die Zwischenablage kopiert und danach gelöscht (Kopieren & Löschen)
C Zeile ab aktueller Cursor-Position löschen
V zeilenweise markieren. Sonst wie „v”.
v zeichenweise markieren. Man aktiviert das Kommando mit v. Wenn man danach den Cursor bewegt, wird der überstrichene Text dunkel unterlegt. Alle Befehle, die nun ausführen werden, wirken auf so den markierten Text. Um die Markierung aufzuheben, muss man erneut v drücken. Soll der markierten Text später an anderer Stelle einfügt werden, kann er mit y in die Zwischenablage kopiert werden.
<Strg>V rechteckigen Block markieren. Sonst wie „v”.
d markierte Textstellen löschen
cw aktuelles Wort ersetzen
[zi]dw oder dW aktuelles Wort löschen (incl. des angehängte Leerzeichens)
de aktuelles Wort löschen (über Zeile hinaus)
dl Zeichen unter Cursor-Position löschen. Besser: Taste Entf
dj zwei Zeilen löschen (Cursor-Position ist 1. Zeile)
dk zwei Zeilen löschen (Cursor-Position ist 2. Zeile)
:5,10d Zeilen 5 bis 10 löschen
:.,$d alle Zeilen löschen ("." = Anfang der Datei, "$" = Ende der Datei)
Text An- und Einfügen:
[zi]yw kopiert das Wort in die Zwischenablage
[zi]Y kopiert die aktuelle Zeile in die Zwischenablage
p Zwischenablage hinter aktueller Zeile einfügen
P Zwischenablage vor aktueller Zeile einfügen
[esc]R Text ab Cursor-Position überschreiben
[zi]J aktuelle Zeile an das Ende der vorhergehenden Zeile anhängen
[esc]o eine Zeile nach der aktuellen einfügen und in den Bearbeitungsmodus wechseln
[esc]O eine Zeile vor der aktuellen einfügen und in den Bearbeitungsmodus wechseln
[esc]a ein Leerzeichen einfügen und in den Bearbeitungsmodus wechseln
[esc]A zum Ende der Zeile springen und in den Bearbeitungsmodus wechseln
[esc]i in den Bearbeitungsmodus wechseln
[esc]I an den Anfang der Zeile springen und in den Bearbeitungsmodus wechseln
Suchen & Ersetzen:
/Linux nach "Linux" suchen. Suchrichtung vorwärts.
?Linux nach "Linux" suchen. Suchrichtung rückwärts.
/ oder n letzte Suche wiederholen
[zi]:s/vorher/nachher/ in aktueller Zeile suchen & ersetzen
:1,7s/vorher/nachher/ in Zeile 1 bis 7 suchen & ersetzen
:%s/vorher/nachher/ in allen Zeilen suchen & ersetzen
Sonstiges:
u macht die letzten Änderungen rückgängig. Ggf. mehrfach hintereinander betätigen!
U alle Änderungen der aktuellen Zeile rückgängig machen
:set all listet alle momentanen Einstellungen auf. Lediglich die Terminalkoptionen werden nicht gezeigt.
:set listet nur die momentanen Einstellungen auf, die von den Defaulteinstellungen abweichen
:set nu schaltet die automatische Zeilennummerierung ein
:set nonu schaltet die automatische Zeilennummerierung aus
:help Aufruf der Hilfsanzeige. Diese wird mit :q beendet. Die Bedienungsanleitung für die Hilfsanzeige steht an deren Anfang.

Eine kleine Übung
Die Übung soll demonstrieren, dass man nicht das gesamte Befehlsspektrum benötigt, um vi anzuwenden. Die Benutzung von vi ist einfacher, als es den ersten Anschein hat!

Es wird eine neue Textdatei mit vi erstellt. Damit lässt sich üben, Text einzutippen und zu bearbeiten. Abschließend kann die Textdatei gespeichert oder verworfen werden.


.
  1. Geben Sie zum Erstellen der neuen Datei textfile.txt oder zum Einlesen der bereits bestehenden Datei textfile.txt Datei mit vi im Konsolmodus das Folgende ein:

    vi textfile.txt

    Standardmäßig wird vi im Befehlsmodus gestartet. Deshalb können Sie jetzt noch keinen Text eingeben.

  2. Drücken Sie I, um in den Bearbeitungsmodus zu gelangen. Die untere Zeile auf dem Bildschirm ändert sich, um anzuzeigen, dass Sie nun Text einfügen können. Probieren Sie aus, ob Sie mit der Taste Einfg die gleiche Wirkung erzielen können und ob sie mit der Taste Einfg zwischen Einfügen und Ersetzen umschalten können!

  3. Schreiben Sie einige Sätze. Wenn Sie eine neue Zeile einfügen möchten, drücken Sie zunächst die Taste Escape, um in den Befehlsmodus umzuschalten. Drücken Sie dann O wie Oscar, um eine neue Zeile einzufügen und wieder in den Bearbeitungsmodus zu wechseln. Probieren Sie aus, ob eine neue Zeile erzeugt wird, wenn Sie die Eingabetaste (Enter) betätigen! Bei dieser Gelegenheit kann man den Funktionsunterschied zwischen o und O studieren.

  4. Im Bearbeitungsmodus und im Befehlsmodus können Sie den Cursor im Text bewegen. Auch die Taste Entf zeigt in beiden Modi Wirkung.

  5. Wenn Sie vi beenden möchten, drücken Sie Esc, um wieder in den Befehlsmodus zu wechseln. Drücken Sie dann :, um den Befehl einzuleiten. Die untere Zeile zeigt nun einen Doppelpunkt.

  6. Um vi zu beenden und Ihre Änderungen zu speichern, geben Sie hinter dem Doppelpunkt wq ein und drücken abschließend die Eingabetaste (Enter). „w” steht für write (schreiben) und „q” steht für quit (beenden).

  7. Die gleiche Wirkung im Befehlsmodus wie :wq hat ZZ.

  8. Sofern Sie die Datei unter einem anderen Namen speichern möchten, geben Sie hinter dem Doppelpunkt dateiname ein und drücken die Eingabetaste,

    Um vi ohne Speichern zu beenden, geben Sie stattdessen hinter dem Doppelpunkt q! ein und betätigen die Eingabetaste.

Deutsche Umlaute und Terminalemulation
Die aktuellen Linux-Distributionen verwenden UTF-8 als Zeichencodierung. Enthält die zu bearbeitende Datei deutsche Umlaute, werden diese unter Umständen nicht korrekt angezeigt. Sofern man den vi-Editor per Telnet-Emulation auf einem PC unter Microsoft-Windows benutzt, bietet die Verwendung des kostenlos erhältlichen Emulatorprogramms „Tera Term” Abhilfe. Der nachfolgende Screenshot entstand unter Tera-Term Version 4.82 auf einem PC mit Windows 7 als Betriebssystem.
Bild: Einstellungen von vim Version 7.2.108 bei UTF-8-Codierung

Letztes Upload: 10.01.2017 um 18:21:34