Die Arbeitsweise des vi
Der Editor vi kann in drei verschiedenen Modi arbeiten.

Allgemeines
Mit diesem UNIX-Editor steht dem Benutzer ein äußerst mächtiges Werkzeug zu Verfügung, mit dem ASCII-Textdateien erstellt und verändert werden können.
| vi dat1 | Ruft den Editor auf und lädt die Datei dat1.
Falls diese nicht existiert wird sie angelegt. |
| vi dat1 dat2 … | Ruft den Editor auf und lädt nacheinander die einzelnen Dateien |
| vi + dat1 | Ruft den Editor auf und lädt die Datei dat1.
Der Cursor wird an das Dateiende gesetzt. Vor und nach dem '+'-Zeichen muß je ein Leerzeichen stehen |
Eingabemodus, Bewegen im Text, Korrekturen
Nach dem Aufruf befindet man sich im Kommandomodus.
Zum Editieren der Datei ist es notwendig, in den Eingabemodus umzuschalten.
Mit der Esc-Taste kommt man wieder zum Kommandomodus zurück.
Kommandos, um in den Eingabemodus zu gelangen (nur im Kommandomodus):
| a | Anhängen an die aktuelle Position |
| A | Anhängen an Zeilenende |
| i | Einfügen an der aktuellen Position |
| I | Einfügen am Zeilenanfang |
| R | Überschreibmodus |
Bewegen im Text (nur im Kommandomodus):
| # | zum Zeilenanfang |
| $ | zum Zeilenende |
| G | zur letzten Zeile der Datei |
| nG | in die Zeile n springen (z.B. 12G) |
| strg+f | vorwärtsblättern |
| strg+b | seitenweise rückwärtsblättern |
| h | Curser nach links |
| l | Curser nach rechts |
| k | Curser nach oben |
| j | Curser nach unten |
| w | wortweise nach rechts |
| b | wortweise nach links |
| H | zur ersten Zeile im Editorfenste |
| L | zur letzten Zeile im Editorfenster |
Zeichen:
| x | ein Zeichen unter dem Curser löschen |
| 6x | 6 Zeichen ab dem Curser löschen |
| 6X | 6 Zeichen vor dem Curser löschen |
| rl | ersetzt das Zeichen unter dem Curser durch ein l |
| ~ | ersetzt Klein- gegen Großbuchstaben (mit jedem Tildedruck einen Buchstaben) |
Zeilen-, Puffer- und Löschkommandos
Zeilen:
| o | fügt eine leere Zeile nach der aktuellen Zeile ein (oft muß
mit Strg + l der
Bildschirm neu aufgebaut werden!) |
| O | fügt eine leere Zeile vor der aktuellen Zeile ein |
| d$ | löschen bis zum Zeilenende |
| D | löschen bis zum Zeilenende |
| d0 | löscht von der aktuellen Position bis Zeilenanfang |
| dG | löscht von der aktuellen Position bis Dateiende |
| U | aktive Zeile wiederherstellen |
Puffer füllen
| Y oder yy | aktuelle Zeile in den Puffer kopieren (ohne zu löschen) |
| 15yy | 15 Zeilen in den Puffer kopieren (ohne zu löschen) |
| dd | löscht die aktuelle Zeile und lädt sie in den Puffer |
| 5dd | löscht die nächsten 5 Zeilen und fügt sie in den Puffer ein |
| "a20dd | 20 Zeilen löschen und in den Puffer a einfügen |
Zeichen aus dem Puffer einfügen
| p und P | Die Zeichen aus dem aktuellen Puffer vor (P) oder nach (p) der aktuellen Zeile einfügen |
| "ap | Puffer a vor (P) oder nach (p) der aktuellen Zeile einfügen |
| J | verbindet die folgende mit der aktuellen Zeile |
| strg+w | löscht das zuletzt eingegebene Wort (im Eingabemodus) |
Löschen im Kommandomodus
| x | löscht das aktuelle Zeichen |
| dd | löscht eine Zeile und fügt sie in den Puffer ein |
| D | löscht von Curser bis Zeilenende |
| d12 | löscht die aktuelle und 12 weitere Zeilen |
| u | letztes Kommando rückgängig machen |
| rl | ersetzt das aktuelle Zeichen durch ein l |
| R | Überschreibmodus |
Bildschirm neu aufbauen
| strg+l | Bei Störungen, z.B. durch eine Benachrichtigung, wird der Bildschirm neu aufgebaut. |
| ZZ | speichern und beenden |
Der Zeilenmodus
Der Zeilenmodus wird durch die Kombination Esc und : eingeleitet
Arbeitsweise/Modus festlegen
| Esc : set all | Alle Optionsnamen anzeigen lassen |
| set Optionsname | setzen einer Option |
| set noOptionsname | rücksetzen einer Option |
| set Option=Wert | Option mit Wertzuweisung setzen (z.b. set tabstop=4) |
Wichtige Optionen:
| number | Zeilennummern anzeigen |
| autoindent | Die Einrückungen nach einem Return beibehalten |
| showmode | Anzeigen des Editiermodus rechts unten |
| tabstop=n | Anzahl Leerstellen für Tabulatorzeichen angeben |
Beispiel: set number
Speichern und beenden
| :w | Dateiname speichern unter dem angegebenem Namen |
| :wq | speichern und beenden |
| :r | Datei2 Der Inhalt
von Datei2 wird an
der aktuelle Curser-Position
eingesetzt. |
| :! Shcommand | das angegebene Kommando ausführen und zum vi zurückkehren |
| :r!Shcommand | Die Ausgabe des Kommandos wird an die aktuelle Position geschrieben. |
| :f | aktuellen Dateiname und Zeilennummer ausgeben |
| :e datei | neue Datei laden |
| :e # | zurück zur ursprünglichen Datei |
| :q! | vi verlassen ohne zu speichern |
| :wq! | speichern einer schreibgeschützten Datei (nur als root) |
Suchmechanismen im Zeilenmodus
| /Muster | Suche vorwärts nach angegebenem Muster |
| ?Muster | Suche rückwärts nach angegebenem Muster |
| /^wort | ein Wort am Zeilenanfang suchen |
| /^$ | nach Leerzeilen suchen (zw. Anfang (^)und Ende ($) stehen keine Zeichen) |
Durch Eingabe eines n (vorwärts) oder N (rückwärts) kann die Suche fortgeführt werden.
Beispiel: /[hk]und sucht
nach hund und kund
Suchen/Ersetzen (Beispiel):
1,10s/text/textersatz/g
In den Zeilen 1 - 10 wird die Zeichenkette text
durch textersatz ausgewechselt.
Durch das /g am Ende der Zeile werden alle Wörter in der Zeile
ersetzt, nicht nur das Erste.
Wird anstelle von 10
ein $-Zeichen verwendet,
werden Ersetzungen im gesamten Text vorgenommen.
auch %s/text/textersatz/g
Ohne Bereichsangebe (1,10) werden nur in der aktuellen Zeile Ersetzungen
durchgeführt.
Esc : h Hilfedatei laden
Esc : q Hilfedatei schließen