Vi

Aus MindLoot
Wechseln zu: Navigation, Suche

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 Klon 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)