Vi

Tastaturorientierter Texteditor
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 14. Februar 2007 um 11:51 Uhr durch 199.67.203.141 (Diskussion) (Zitate). Sie kann sich erheblich von der aktuellen Version unterscheiden.

vi („vi“ für „visual“; ausgesprochen [ vi: ai ], aber nicht [ vi: ] und auch nicht „sechs“ oder „six“ (wie die römische Zahl VI)) ist ein 1976 von Bill Joy für eine frühe BSD-Version geschriebener und von POSIX standardisierter Texteditor. Der Name stammt von „Visual Interface“, weil sein Vorgänger ex ein einfacher Zeileneditor war.

Datei:Vim.jpg

Einordnung

Bis Anfang der 1970er Jahre wurden hauptsächlich zeilenorientierte Editoren benutzt, wobei ein weit verbreiteter der Editor ed war. Joy baute auf diesem auf, zunächst mit ebenfalls einem Zeileneditor, ex. Darauf baute später der seitenorierten Editor vi auf. vi wurde schnell zum De-Facto-Standardeditor unter Unix, jedenfalls bis zum Aufstieg von Emacs um etwa 1984.

1991 benutzten ungefähr die Hälfte aller Teilnehmer einer Usenet-Umfrage den vi. Auch heutzutage ist vi zumindest in der Unixwelt noch sehr verbreitet. Außerdem kann man mit diesem Editor in Kombination mit ssh (früher mit Telnet oder rsh) im Netzwerk sehr gut auf anderen Rechnern arbeiten.

Die originale Version von Bill Joy war ursprünglich weder im Quelltext noch sonst frei verfügbar, so dass sich über die Jahre eine Reihe von Klonen entwickelte, z.B. Vim, Nvi, elvis, WinVi, die auch inzwischen teilweise auf nicht Unix-artigen Systemen laufen.

Aufgrund seiner Resourcenfreundlichkeit startet vi bzw. fast alle seiner Klone schneller und benötigen weniger Speicherplatz als Emacs. Sogar auf einer Rettungsdiskette hat vi bzw. ein vi Klone auch heute noch Platz, so dass entweder vi selbst oder einer seiner Klone Bestandteil fast aller Unix-/Linux-Distributionen ist.

vi-Arbeitsmodi

vi besitzt drei grundsätzlich unterschiedliche Arbeitsmodi. Die drei Modi sind:

  • Befehlsmodus (command mode)
Beim Start von vi befindet man sich im Befehlsmodus. Dort können durch verschiedene Tastendrücke einfache Befehle ausgeführt werden, wie z.B. „Wort suchen“, „Zeile löschen“ usw. Durch Drücken von ESC gelangt man in diesen Befehlsmodus.
  • Einfügemodus (insert mode)
Im Einfügemodus ist die eigentliche Eingabe von Text möglich. Durch Drücken von Befehlseingabebefehlen, wie [i], [a] oder [o] gelangt man aus dem Befehlsmodus in diesen Einfügemodus.
  • Kommandozeilenmodus (auch Komplexbefehlsmodus, colon mode oder ex mode)
Durch Eingabe von ':' (Doppelpunkt) gelangt man vom Befehlsmodus in den Kommandozeilenmodus. Dort können komplexere Befehle ausgeführt werden, wie etwa Suchen und ersetzen von Text (:%s/alter_text/neuer_text/g).

Frühere Versionen gaben dem Benutzer kein Indiz, in welchem Modus er sich gerade befand, so dass es auch heute noch typisch für den vi-Benutzer ist, immer vorsichtshalber noch einmal [ESC] zu drücken, um ganz sicher zu gehen, dass er sich wirklich im Befehlsmodus befindet (falls das vorher schon der Fall war, wird vi einfach nur piepsen). Aktuelle Versionen von vi deuten ihren augenblicklichen Modus auf der Statuszeile oder grafisch an (siehe Screenshot unterste Zeile - der Modus ist „EINFÜGEN“).

                                   +-------------------+
                                   | |  Start mit:     |
                                   | v  vi dateiname   |
+-------------------+--------------+-------------------+--------------+-------------------+
|                   |              |                   |              |                   |
| Kommandozeilen-   |  <---------  | Befehls-Modus     |  --------->  | Einfüge-Modus     |
| Modus             |     „:“      |                   |  [i], [a],   |                   |
|                   |              | Verwendung von:   |  [o] usw.    |                   |
|                   |              | yy, p, dd, J      |              | Normales Editie-  |
| z.B. „wq“, „q!“   |              | usw.              |              | ren, Pfeiltasten  |
| oder komplexe     |              |                   |              | Bildscrollen usw. |
| Befehle, wie      |  [ENTER]     | (Der vi startet   |    [ESC]     |                   |
| Suchen & Ersetzen |  --------->  | in diesem Modus)  |  <---------  |                   |
|                   |              |                   |              |                   |
+-------------------+--------------+-------------------+--------------+-------------------+
                                   | |  Beenden mit    |
                                   | v  „:wq“ od. „ZZ“ |
                                   +-------------------+

(wenige Ausnahmen, wie z.B. das Zurückspringen des [r]-Befehls in den Befehlsmodus ohne Drücken von [ESC], existieren)

Vor- und Nachteile

Aufgrund der verschiedenen Arbeitsmodi brauchen Neueinsteiger für vi eine hohe Frustrationstoleranz. Ein großer Vorteil von vi ist, dass mehrere Befehle nacheinander ohne gleichzeitiges Betätigen der Alt-, Strg- oder sonstiger Modifikator-Tasten abgesetzt werden können. Für den geübten Benutzer bedeutet das eine erhebliche Steigerung der Arbeitsgeschwindigkeit. So löscht zum Beispiel 3dw gleich drei Wörter auf einmal oder hängt mit %s/&/text/g an alle Zeilen gleichzeitig einen Text an.


Ein weiterer wichtiger Vorteil:

der VI ist auf jedem UNIX System unabhängig von Alter und Hersteller verfügbar und funktioniert auch wenn Pfeiltasten etc. nicht richtig gesetzt sein sollten. Für erfahrene Entwickler immer noch ein mächtiges Werkzeug

Zitate

  • „Why are we hiding from the police, daddy?“ - „Because we use vi son, they use emacs.“ - Unbekannter Autor (spielt auf die Flamewars zwischen vi- und Emacs-Benutzern an)
  • „Sure vi is user-friendly; it's just peculiar about who it makes friends with.“ - Unbekannter Autor
  • „Was heisst vi auf englisch? like egg“ - Thomas Menn

Literatur

Wikibooks: Vi Befehlsreferenz – Lern- und Lehrmaterialien