Inhaltsverzeichnis

Formatierung einer Datei [DOS/UNIX/ …] ( CR+LF/LF/ …)

:set ff ?
:set ff=dos

Codierung einer Datei (latin1 [=iso-8859-1]/iso-8859-n/UTF-8/…)

:set encoding
:set encoding=utf-8

Neu einlesen einer extern geänderten Datei

:e!

Der UNIX-Editor vi

Für die Benutzung des Editors ist kein X-Windows nötig, denn vi läuft auf nahezu jedem Terminal. Daher ist es wichtig, den richtigen Terminaltyp beim login anzugeben. Loggt man sich beispielsweise über das Netz per ssh auf einen Zentralrechner ein, sollte man als Terminaltyp vt100 setzen mit set term = vt100 . Als Default ist meist xterm gesetzt, anzuzeigen mit dem Kommando echo $term . Mit der Datei .exrc im Homedirectory des Benutzers kann eine eigene Tastaturbelegung für den vi geladen werden.

  Aufruf: 
#vi filename 

Damit wird die Datei in den Editorpuffer geladen und die ersten Zeilen werden, soweit vorhanden, auf dem Bildschirm ausgegeben, sonst wird die Datei neu angelegt:

Der vi kennt zwei Modi, den Kommandomodus und den Insertmodus. Nach Aufruf befindet man sich im Kommandomodus. In den Insertmodus gelangt man durch Eingabe von <i>, zurück in den Kommandomodus mit <ESC>.

Die wichtigsten Kommandos:

  :wq              Datei sichern und Editor verlassen
  ZZ               Datei sichern und Editor verlassen (alternativ)
  :q!              Editor verlassen ohne Abspeichern
  :w file          Datei nach file schreiben
  :w! file         Datei nach file schreiben, falls vorhanden überschreiben
  :z1,z2 w file    Zeilen z1 bis z2 nach file schreiben
  :r file          file in Editorpuffer einlesen und an aktueller Cursorposition einfügen
  :n               next, die nächste Datei aus der Aufrufliste wird in den Editorpuffer geladen
  i text <ESC>     insert, Text vor Cursorposition einfügen
  I text <ESC>     Text am Zeilenanfanf einfügen
  a text <ESC>     append, Text hinter Cursorposition einfügen
  A text <ESC>     Text am Zeilenende einfügen
  o text <ESC>     open, neue Zeile hinter aktueller Zeile einfügen
  O text <ESC>     neue Zeile vor aktueller Zeile einfügen
  R text <ESC>     replace, nachfolgenden Text überschreiben
  C text <ESC>     change, nachfolgenden Text bis Zeilenende ersetzen
  ctrl v <s>       im Insertmodus einfügen von Steuerzeichen <s>
  \                Wirkung des nachfolgenden Sonderzeichens wird aufgehoben
  r c              replace, ersetze aktuelles Zeichen durch c
  x                lösche aktuelles Zeichen
  cw               change word, der Rest des aktuellen Wortes wird überschrieben
  D                lösche Rest der Zeile
  dd               lösche aktuelle Zeile
  dw               lösche aktuelles Wort
  z1,z2 d          lösche den Bereich Zeile z1 bis z2
  ctrl g           liefert aktuelle Zeilennummer und Länge der Datei
  u                undo, mache letzten Befehl rückgängig
  [n]Y             yank, es werden n Zeilen ab der aktuellen in den Puffer geschrieben. Wird n nicht angegeben, wird die akt. Zeile gepuffert.
  yw               Wort wird ab Cursorposition gepuffert
  p                paste, schreibt den Pufferinhalt hinter die aktuelle Cursorposition
  J                join, die aktuelle und die nachfolgende Zeile werden zu einer verknüpft
  :s/alt/neu       substitute,in aktueller Zeile erstes alt durch neu ersetzen
  :s/alt/neu/g     in aktueller Zeile alle alt durch neu ersetzen
  :%s/alt/neu/g    in der ganzen Datei alt durch neu ersetzen
  :%s/alt/neu/c    in der ganzen Datei alt durch neu nach Rückfrage ersetzen,bei Eingabe von y<CR> wird ersetzt, sonst nicht
  /suchstring      sucht ab aktueller Cursorposition nach suchstring
  ?suchstring      sucht analog rückwärts
  n                next, wiederhole das letzte Suchkommando

Cursorpositionierung

Die Cursortasten sollten funktionieren, ansonsten müssen entsprechende Änderungen in der Datei .exrc vorgenommen werden.

  ctrl F        eine Seite vorwärts blättern
  ctrl B        eine Seite rückwärts blättern
  ^             Anfang der aktuellen Zeile
  $             Ende der aktuellen Zeile
  :(n)          Anfang von Zeile n
  ctrl N        nächste Zeile, gleiche Spalte
  :!kommando    Ausführen eines Shell-Kommandos innerhalb des vi's

Set-Optionen

  :set all     listet sämtliche momentanen Einstellungen
  :set nu      automatische Zeilennumerierung einstellen
  :set nonu    Zeilennumerierung ausstellen

Hinweis

Falls ausversehen Control-S gedrückt wird (z.B. weil versucht wurde die Datei über die Emacs Tastenkombination C-x C-s zu Speichern…), dann wird dieses vom Terminal als Stop interpretiert. Es werden dann solange keine Tastendrücke verarbeitet, bis durch Drücken von Control-Q dieser Stop wieder aufgehoben wird. Alle in der Zwischenzeit eingegebenen Tastendrücke werden dann ausgewertet.

Vorteile von vi