Den VI-Editor beherrschen

ArticleCategory: [Kies een categorie voor je artikel]

Applications

AuthorImage:[Hier komt een kleine foto van jou]

[Foto of the Auteur]

TranslationInfo:[Info over schrijver(s) en vertaler(s)]

original in en Ben Y. Yoshino

en to deKarsten Schulz

AboutTheAuthor:[een korte biografie over de auteur]

Ben Yoshinori Yoshino arbeitet an der Universit�t von Hawaii. Seine Homepage ist unter www.eng.hawaii.edu/~ben zu finden.

Abstract:[een kleine samenvatting/beschrijving van het artikel]

Dieser Artikel ist ein Tutorium von Ben Y. Yoshino. Das Original ist unter www.eng.hawaii.edu/Tutor/vi.html verf�gbar. Es gibt noch weitere Tutorien des Autors unter: www.eng.hawaii.edu/Tutor/. Wir fanden diesen Artikel auf www.rootprompt.org und ver�ffentlichen diesen mit der Erlaubnis des Autors

Der VI ist ein bildschirmorientierter Editor, der von vielen Unix-Anwendern benutzt wird. Der VI besitzt hervorragende Eigenschaften, um Programmierer bei ihrer Arbeit zu unterst�tzen. Anf�nger meiden oft den VI, da sie von der Funktionsvielfalt des VI �berw�ltigt sind. Dieses Tutorium wurde geschrieben, um den Anf�nger an den VI zu gew�hnen. Es enth�lt aber auch Abschnitte, die f�r den regelm��igen Anwender relevant sind. Es werden Beispiele aufgezeigt und am Besten ist es, diese Beispiele auszuprobieren. Und nat�rlich, sich selbst �bungen auszudenken... Es gibt keinen besseren Weg, als eigene Erfahrungen zu sammeln.

ArticleIllustration:[Titel-illustratie van het Artikel]

[VIM the edtitor]

ArticleBody:[Het eigenlijke artikel: zet hier teks en HTML codes]

Vereinbarungen

Wir wollen in diesem Tutorium folgende Vereinbarungen treffen:

^X bezeichnet ein Steuerungszeichen. Wenn Du beispielsweise ein ^d im Tutorium siehst, bedeutet das, dass die Steuerungstaste (strg) gehalten werden mu� und der dazugeh�rige Buchstabe. In diesem Beispiel also: strg dr�cken und gedr�ckt halten und dazu den Buchstaben d dr�cken. Dann beide Tasten loslassen.

Bevor Du beginnst

Dieser Abschnitt ist nicht relevant f�r Linux-Anwender mit modernen Terminal-Emulatoren wie xterm, gnome-terminal, kvt oder aterm. Mit diesen Terminals ist die Shell-Variable $TERM immer auf den richtigen Wert gesetzt, und Du brauchst Dir keine weiteren Gedanken dar�ber machen.

Der VI ist ein Bildschirmeditor, deshalb mu� er wissen, auf welcher Art Terminal er l�uft. Wenn Du Dich an dem Rechner wiliki anmeldest (wiliki ist der Name des Hauptrechners der Universit�t von Hawaii), wird dieser Dich nach Deinem Terminal fragen. Die Eingabeaufforderung sieht so aus:

	TERM = (vt100)

Wenn Du ein vt100 Terminal hast (oder einen Emulator, der vt100 emulieren kann), kannst Du einfach [enter] dr�cken. Wenn Du ein HP-Terminal hast, dann gib "hp" als Terminalname ein und best�tige mit [enter]. Falls Du nicht sicher bist, welchen Terminal-Typ Du nutzt, frage die Aufsicht oder lasse Dir helfen.

Falls Du einen Fehler bei der Anmeldung gemacht hast, und Du den falschen Terminal-Typ eingegeben hast, bleibe ruhig und melde Dich wieder ab. Du kannst folgende Befehle nutzen, um die Einstellungen zu korrigieren:

Nun, da Dein Terminal-Typ (hoffentlich) richtig eingestellt ist, kannst Du mit dem VI starten.

Den VI starten

Mit dem VI kann der Benutzer eine neue Datei erstellen oder vorhandene Dateien bearbeiten. Der Befehl, um den VI zu starten, lautet vi, gefolgt von dem Dateinamen. Um zum Beispiel eine Datei mit dem Namen dateiname zu bearbeiten, musst Du vi dateiname eingeben und [ENTER] dr�cken. Du kannst den VI auch ohne Angabe eines Dateinamens starten, wenn der Text dann gesichert werden soll, mu� allerdings ein Dateiname angegeben werden.

Wenn Du den VI das erste Mal startest, ist der Bildschirm auf der linken Seite mit Tilden (~) gef�llt. Jede leere Zeile hinter dem Ende der Datei wird auf diese Art dargestellt. Am unteren Ende des Bildschirms wird der Dateiname anzeigt, falls eine existierende Datei angegeben wurde. Die Gr��e der Datei wird ebenfalls angezeigt und das Ganze sieht etwa so aus:

"Dateiname" 21 lines, 385 characters
Falls die angegebene Datei nicht existiert, wird auf folgende Art angezeigt, dass es sich um eine neue Datei handelt:
"newfile" [New file]
Falls Du den VI ohne Dateinamen gestartet hast, ist die unterste Bildschirmseite einfach leer. Falls diese Informationen nicht angezeigt werden, k�nnte es sein, dass der Terminaltyp falsch gesetzt ist. Tippe einfach :q und [ENTER] ein, um den VI zu verlassen und stelle den Terminaltyp richtig ein. Falls Du nicht wei�t wie, frage einfach die Aufsicht.

Den VI beenden

Da Du nun wei�t, wie man in den VI hineinkommt, ist es eine gute Idee zu lernen, wie man den VI wieder verl�sst. Der VI-Editor hat zwei Modi und um den VI verlassen zu k�nnen, musst Du dich im Befehls-Modus befinden. Dr�cke die Taste mit der Aufschrift "Escape" oder "Esc" (falls Dein Terminal eine solche Taste nicht hat, versuche ^[, oder strg-[.), um in den Befehls-Modus zu gelangen. Mache Dir keine Gedanken dar�ber, ob Du schon im Befehls-Modus warst, als Du "Escape" gedr�ckt hast. M�glicherweise piepst es, aber Du wirst weiter im Befehls-Modus bleiben.

Der Befehl, um den VI zu verlassen, lautet :q. Wenn Du im Befehls-Modus bist, tippe einen Doppelpunkt (:) und den Buchstaben 'q', gefolgt von [ENTER]. Falls deine Datei in irgendeiner Form ge�ndert wurde, wird der Editor dich warnen und sich nicht beenden. Der Befehl, um diese Nachricht zu ignorieren, lautet :q!. Damit wird der VI ohne abzuspeichern verlassen.

Nat�rlich willst Du Deine �nderungen normalerweise speichern. Der Befehl, um die Inhalte des Editors zu speichern lautet :w. Du kannst die Befehle zum Abspeichern und Verlassen kombinieren, indem Du :wq eingibst. Du kannst hinter dem :w auch einen anderen Dateinamen zum Speichern angeben. Wenn Du zum Beispiel die Datei, die Du bearbeitet hast als Datei mit dem Namen dateiname2 abspeichern m�chtest, kannst Du einfach w dateiname2 eingeben und mit [ENTER] best�tigen.

Ein anderer Weg, um �nderungen zu speichern und den VI zu verlassen ist der Befehl ZZ. Wenn Du im Befehls-Modus bist, tippe die Gro�buchstaben ZZ und es wird das gleiche geschehen, als ob :wq eingegeben worden w�re. Alle �nderungen an der Datei werden gesichert. Dies ist die einfachste Methode, den VI zu verlassen, nur zwei Tastendr�cke.

Die zwei Modi des VI

Das erste, was die meisten Anwender �ber den VI lernen, ist, dass er zwei Modi hat: den Befehls- und Einf�ge-Modus. Der Befehls-Modus erlaubt die Eingabe von Befehlen, um Text zu manipulieren. Diese Befehle sind normalerweise ein oder zwei Zeichen lang und k�nnen mit ein paar Tastendr�cken eingegeben werden. Der Einf�ge-Modus f�gt alles, was eingetippt wird in den aktuellen Text ein.

Der VI startet zu Beginn im Befehls-Modus. Es gibt verschiedene Befehle, um den VI in den Einf�ge-Modus umzuschalten. Die am h�ufigsten gebrauchten Befehle, um in den Einf�ge-Modus zu gelangen sind a und i. Diese beiden Befehle werden unten beschrieben. Wenn Du Dich im Einf�ge-Modus befindest, kannst Du ihn durch das Dr�cken der escape-Taste verlassen. Falls Dein Terminal keine escape-Taste hat, sollte auch ^[ (strg-[) funktionieren. Du kannst escape zweimal hintereinander dr�cken, damit der VI sich definitiv im Befehls-Modus befindet. Durch das Dr�cken von escape w�hrend der VI im Befehls-Modus ist, wird dieser nicht wieder verlassen. Der VI piepst vielleicht, um anzuzeigen, dass er sich bereits im Befehls-Modus befindet.

Wie Befehle im Befehls-Modus eingegeben werden

Die Befehle des Befehls-Modus haben normalerweise folgendes Format: (wahlweise Argumente sind in eckigen Klammern angegeben)

Die meisten Befehle sind ein Zeichen lang, einschlie�lich derer, die Steuerungszeichen enthalten. Die in diesem Abschnitt beschriebenen Befehle sind die am h�ufigsten genutzten des VI-Editors.

Die Anzahl wird als Zahl, die mit einer Ziffer zwischen 1 und 9 beginnt, eingegeben. So l�scht zum Beispiel der Befehl x das Zeichen unter der Schreibmarke. Wenn Du 23x eintippst, w�hrend Du im Befehls-Modus bist, werden 23 Zeichen gel�scht.

Einige Befehle nutzen einen optionalen Ort-Parameter, der angibt, wieviele Zeilen oder wieviel Text des Dokuments vom Befehl bearbeitet werden soll. Der Ort-Parameter kann auch jeder Befehl sein, um die Schreibmarke zu bewegen.

Einige einfache VI Befehle

Hier folgt eine einfache Sammlung von Befehlen, um dem VI-Anf�nger den Start zu erleichtern. Es gibt noch viele andere n�tzliche Befehle, die in einem sp�teren Abschnitt besprochen werden.

a
(append) aktiviert den Einf�ge-Modus, die eingegebenen Zeilen werden hinter die aktuelle Schreibposition eingef�gt. Wenn Du eine Anzahl angibst, wird der eingegebene Text entsprechend der Anzahl wiederholt eingef�gt.
h
bewegt die Schreibmarke um ein Zeichen nach links
i
(insert) aktiviert den Einf�ge-Modus, die eingegebenen Zeihen werden vor die aktuelle Schreibposition eingef�gt. Wenn Du eine Anzahl angibst, wird der eingegebene Text entsprechend der Anzahl wiederholt eingef�gt.
j
bewegt die Schreibmarke um eine Zeile nach unten
k
bewegt die Schreibmarke um eine Zeile nach oben
l
bewegt die Schreibmarke um ein Zeichen nach rechts
r
(replace) ersetzt das eine Zeichen unter der Schreibmarke. Mittels der Angabe von Anzahl k�nnen mehrere Zeichen ersetzt werden.
u
(undo) macht die letzte �nderung an der Datei r�ckg�ngig. Wenn u nochmal gedr�ckt wird, wird die r�ckg�ngig gemachte �nderung wiederhergestellt.
x
l�scht das Zeichen unter der Schreibmarke. Anzahl gibt an, wieviele Zeichen gel�scht werden sollen. Die Zeichen hinter der Schreibmarke werden gel�scht.

Textpuffer im VI

Der VI-Editor hat 36 benannte und einen allgemeinen Puffer, um Textteile zu speichern. Immer dann, wenn ein Textblock gel�scht oder kopiert wird, wird dieser Block im allgemeinen Puffer zwischengespeichert. Die meisten Anwender des VI nutzen die anderen Puffer nur selten und kommen ohne diese zurecht. Der besagte Textblock wird in einem anderen Puffer gespeichert, wenn einer angegeben wird. Der zu benutzende Puffer wird durch den Befehl " angegeben. Nachdem " getippt wurde, mu� ein Buchstabe oder eine Ziffer als Puffername angegeben werden. Ein Beispiel: "mdd benutzt den Puffer m und die letzten beiden Zeichen dd l�schen die aktuelle Zeile. Genauso kann man Text einf�gen, indem der Befehl p oder P benutzt wird. "mp f�gt den Inhalt des Puffers m hinter die aktuelle Schreibposition ein. F�r jeden Befehl aus den n�chsten zwei Abschnitten k�nnen diese Puffer zum zeitweisen Zwischenspeichern von W�rtern oder Abs�tzen angegeben werden.

Ausschneiden und Einf�gen

Der am h�ufigsten benutzte Befehl zum Ausschneiden von Text ist d. Dieser Befehl l�scht Text aus der Datei. Der Befehl kann durch eine optionale Anzahl eingeleitet und durch eine Ort-Angabe abgeschlossen werden. Wenn Du den Befehl doppelt eingibst, indem Du dd tippst, dann wird die aktuelle Zeile gel�scht. Hier sind einige Kombinationen dieses Befehls:

d^
l�scht von der aktuellen Schreibposition bis zum Anfang der Zeile.
d$
l�scht von der aktuellen Schreibposition bis zum Ende der Zeile.
dw
l�scht von der aktuellen Schreibposition bis zum Ende des aktuellen Wortes .
3dd
l�scht drei Zeilen von der aktuellen Schreibposition an abw�rts.

Es gibt auch noch einen y-Befehl (kopieren), der �hnlich wie der d-Befehl arbeitet, aber der Text nicht gel�scht sondern nur im Puffer abgelegt wird.

Einf�gen

Die Befehle zum Einf�gen sind p und P. Sie unterscheiden sich nur in der Position, wo der Text eingef�gt wird. p f�gt den angegebenen oder den allgemeinen Puffer hinter die aktuelle Schreibposition ein, w�hrend P den angegebenen oder allgemeinen Puffer vor die aktuelle Schreibposition einf�gt. Wird eine Anzahl angegeben, f�gen die Befehle den Text entsprechend oft ein.

Einr�cken und �berpr�fen von Quellcode

Der VI unterst�tzt Programmierer, ihren Quellcode ansehnlich zu formatieren. Es gibt eine Variable, die die Einr�ckung f�r jede verschachtelte Einr�ckungsebene angibt. Um sie einzurichten, siehe den Abschnitt Anpassungen dieses Tutoriums. Der Befehl, um die Einr�ckung beispielsweise auf 4 Zeichen zu setzen lautet: :set sw=4.

Die folgenden Befehle r�cken Deine Zeilen ein oder entfernen Einr�ckungen, sie k�nnen mit einer Anzahl angegeben werden:

<<
r�ckt die aktuelle Zeile um eine Einr�ckungsbreite nach links.
>>
r�ckt die aktuelle Zeile um eine Einr�ckungsbreite nach rechts.

Der VI hat au�erdem eine n�tzliche Funktion, um den Quellcode nach ungleichm��ig gesetzten Klammerpaaren zu pr�fen. Das %-Kommando schaut nach der entsprechenden linken Klammer einer rechten Klammer oder umgekehrt. Setze einfach die Schreibmarke auf eine Klammer und dr�cke %, um die Schreibmarke zur dazugeh�rigen Klammer zu bewegen. Diese Funktion ist sehr n�tzlich, um nicht geschlossene Klammern zu finden. Der VI piepst, um anzuzeigen, dass keine passende Klammer gefunden wurde.

Wort und Zeichensuche

Der VI stellt zwei Methoden f�r die Suche zur Verf�gung: Suche nach Zeichenketten und Suche nach Zeichen. F�r die Zeichenkettensuche werden die Befehle / und ? benutzt. Beim Benutzen dieser Befehle wird das getippte Zeichen einfach in der Statuszeile angezeigt, wo die zu suchende Zeichenkette eingegeben wird. Die beiden Befehle unterscheiden sich nur in der Richtung der Suche im Text. Der /-Befehl sucht vorw�rts in der Datei, w�hrend der ?-Befehl r�ckw�rts im Text sucht. Die Befehle n- und N-Befehle wiederholen den Suchbefehl in der gleichen bzw. in entgegengesetzter Richtung. Einige Zeichen haben eine besondere Bedeutung f�r den VI, deshalb m�ssen sie durch einen backslash (\) eingeleitet werden, wenn sie in einem Suchausdruck ben�tigt werden.

Spezielle Zeichen:

^
Anfang der Zeile (am Anfang des Suchausdrucks).
.
findet ein einzelnes Zeichen.
*
findet kein oder mehrere des vorangegangenen Zeichens.
$
Ende der Zeile (am Ende des Suchausdrucks).
[
Legt eine Menge von passenden oder nicht passenden Suchmustern fest... zum Beipiel: /t[iao]p findet jede der folgenden Zeichenketten: tip tap top. Das folgende Suchmuster findet alles, was mit einem a beginnt, dem aber keiner der Buchstaben b, c oder d folgt: /a[^bcd]
<
in einen Suchausdruck mit einem backslash (\) gesch�tzt eingef�gt, findet den Anfang eines Wortes. Zum Beispiel findet: /\<der\> nur das Wort der, nicht Worte, wie etwa: Rinder oder dergleichen.
>
Siehe die Erkl�rung zu '<'

Die Zeichensuche sucht innerhalb einer Zeile nach dem Zeichen, das nach dem Befehl eingegeben wurde. Die Befehle f und F suchen nach einem Zeichen in der aktuellen Zeile. f sucht vorw�rts und F sucht R�ckw�rts, wobei die Schreibmarke an die Position des gefundenen Zeichens gesetzt wird.

Die Befehle t und T suchen ein Zeichen in der aktuellen Zeile. Bei t wird die Schreibmarke an die Position vor dem gefundenen Zeichen gesetzt, und T sucht in der Zeile r�ckw�rts wobei die Schreibmarke hinter das gefundene Zeichen gesetzt wird.

Diese beiden Befehlss�tze k�nnen mit ; oder , wiederholt werden, wobei ; den letzten Zeichensuche-Befehl in der selben Richtung, und , den Befehl in entgegengesetzter Richtung wiederholt.

Mit der gesetzten Option "ic" (oder ignorecase, tippe :set ic) kannst Du ohne Ber�cksichtigung der Gro�- und Kleinbuchstaben suchen.

Einstellungen des VI (und EX)

Das Verhalten des VI kann schon beim Starten eingestellt werden. Es gibt verschiedene Bearbeitungsoptionen, die durch den :set-Befehl verf�gbar sind. Nachfolgend die VI- und EX-Editor Optionen, die auf Wiliki verf�gbar sind: (diese Liste bekommst Du, wenn Du :set all und ENTER im Kommandomodus eingibst)

noautoindent        magic                               noshowmatch
autoprint           mesg                                noshowmode
noautowrite         nomodelines                         noslowopen
nobeautify          nonumber                            tabstop=8
directory=/tmp      nonovice                            taglength=0
nodoubleescape      nooptimize                          tags=tags /usr/lib/tags
noedcompatible      paragraphs=IPLPPPQPP LIpplpipnpbp   term=xterm
noerrorbells        prompt                              noterse
noexrc              noreadonly                          timeout
flash               redraw                              timeoutlen=500
hardtabs=8          remap                               ttytype=xterm
noignorecase        report=5                            warn
keyboardedit        scroll=11                           window=23
keyboardedit!       sections=NHSHH HUuhsh+c             wrapscan
nolisp              shell=/bin/csh                      wrapmargin=0
nolist              shiftwidth=8                        nowriteany

Einige dieser Optionen besitzen Werte, die durch das Gleichheitszeichen '=' gesetzt sind, w�hrend andere entweder gesetzt sind oder nicht gesetzt sind. (Diese an- oder aus-Optionen werden Boolean genannt und beginnen dann mit "no", wenn sie nicht gesetzt sind). Die hier gezeigten Optionen sind diejenigen, die ohne Benutzeranpassungen gesetzt sind. Nachfolgend werden einige von ihnen und deren Abk�rzungen beschrieben. So kannst Du zum Beispiel f�r den Befehl "set autoindent" :set autoindent oder :set ai tippen. Um diese Option zu deaktivieren, tippe :set noautoindent oder :set noai.

autoindent (ai)
Diese Option bewirkt, dass eine Zeile, die einer einger�ckten Zeile folgt, ebenfalls einger�ckt wird. Falls die neue Zeile nicht einger�ckt werden soll, kannst Du auf der ersten Zeichenposition ^D eingeben. Die Tastenkombination ^D funktioniert im Einf�ge- und nicht im Befehls-Modus. Die Tiefe der Einr�ckung kann mittels shiftwidth eingestellt werden, was weiter unten beschrieben wird.
exrc
Die .exrc Datei im aktuellen Verzeichnis wird w�hrend des Startens gelesen. Diese Option muss entweder in der Umgebungsvariable EXINIT oder in der .exrc Datei im Home-Verzeichnis gesetzt werden.
mesg
Wenn diese Option durch Eingabe von :set nomesg aufgehoben wird, kann niemand mittels talk oder write Nachrichten auf das Terminal senden.
number (nu)
Zeigt Zeilennummern auf der linken Bildschirmseite an.
shiftwidth (sw)
Diese Option nimmt einen Wert an, der die Breite eines Software-Tabulators bestimmt. (Der Software-Tabulatore wird f�r die Befehle << und >> benutzt.) Eine Breite von 4 Zeichen w�rde zum Beispiel mittels :set sw=4 eingestellt werden.
showmode (smd)
Zeigt den gerade aktuellen Modus des Editors an. Wenn Du Dich im Einf�ge-Modus befindest, wird auf der untersten Zeile des Bildschirms INPUT MODE angezeigt.
warn
diese Option warnt Dich, wenn die Datei ge�ndert wurde, sie jedoch noch nicht gesichert ist.
window (wi)
setzt die Anzahl der Zeilen des Fensters auf dem Bildschirm, das vom VI benutzt wird. Wenn Du zum Beispiel nur 12 Zeilen Deines Bildschirm nutzen m�chtest (weil Deine Modem-Verbindung langsam ist), benutzt Du: :set wi=12.
wrapscan (ws)
stellt das Verhalten der Wortsuche ein. Falls das gesuchte Wort bis zum Ende der Datei nicht gefunden wurde, wird die Suche am Anfang der Datei fortgesetzt, wenn diese Option gesetzt ist.

Abk�rzungen und Tastenbelegungen umlegen

Ein EX-Editor-Befehl, der im VI n�tzlich ist, ist der abbreviate-Befehl. Dadurch kannst Du Abk�rzungen f�r bestimmte Zeichenketten erzeugen. Der Befehl sieht wie folgt aus: :ab Abkz Abzuk�rzender Text. Wenn Du zum Beispiel den Namen "Humuhumunukunukuapua`a" eingeben mu�t, Du aber nicht jedes mal den ganzen Namen tippen willst, kannst Du eine Abk�rzung daf�r benutzen. F�r dieses Beispiel lautet der Befehl:
:ab 9u Humuhumunukunukuapua`a
Wenn Du nun 9u als ein alleinstehendes Wort eintippst, wird der VI den langen Namen daf�r ausgeben. Wenn Du 9universit�t eingibst, wird die Abk�rzung nicht ersetzt.

Um eine vorher definierte Abk�rzung zu entfernen, gibt es den Befehl unabbreviate. Um die Abk�rzung des vorherigen Beispiels zu entfernen, wird der Befehl :una 9u benutzt. Um eine Liste der Abk�rzungen zu erhalten, gibt einfach :ab ein.

Ein anderer EX-Editor-Befehl das zum Einrichten der Arbeitsumgebung n�tzlich ist, ist das Mapping. Es gibt zwei Arten von Map-Befehlen. Einer ist f�r den Befehls-Modus zust�ndig, der andere f�r den Einf�ge-Modus. Diese beiden Befehle lauten :map und :map!. Das Mapping funktioniert �hnlich den Abk�rzungen. Du gibst eine Tastenfolge an, sowie eine weitere, die die erste ersetzt. (die ersetzten Tastenfolgen sind in der Regel VI-Befehle.)

Die EXINIT Umgebungsvariable und die .exrc-Datei

Es gibt zwei Wege, den VI anzupassen. Wenn Du eine Datei namens .exrc in Deinem Home-Verzeichnis erstellst, werden alle Befehle in dieser Datei beim Starten des VI ausgef�hrt. Die andere Methode ist, eine Umgebungsvariable namens EXINIT zu setzen. Die Umgebungsvariable wird in der Shell-Startdatei gesetzt. Wenn Du /bin/csh (C-Shell) benutzt, lautet der Befehl in der Startdatei .cshrc folgenderma�en:

    setenv EXINIT '...'
Falls Du /bin/sh or /bin/ksh benutzt, lautet der Befehl in der Datei .profile so:
    export EXINIT
    EXINIT='...'
Gib aber nicht die drei Punkte ein (...), sondern an deren Stelle die VI-Befehle, die beim Starten gesetzt werden sollen. Wenn Du zum Beispiel auto indent, line numbering, und wrap margin auf 3 Zeichen setzen willst, dann sieht der setenv-Befehl f�r die C-Shell so aus:
    setenv EXINIT 'set ai nu wm=3'

Falls Du mehr als einen Befehl in dieser setenv EXINIT-Sache setzen m�chtest, benutzt zum Trennen der Befehle den senkrechten Strich (|). Um zum Beispiel den Befehl 'g' auf den 'G'-Buchstaben zu legen, lautet der Befehl :map g G. Oben eingef�gt sieht das dann so aus:

setenv EXINIT 'set ai nu wm=3|map g G'

Wenn Du die Datei namens .exrc erzeugen willst, kannst Du die Befehle genauso eingeben, wie sie oben zwischen den Anf�hrungszeichen stehen.

Die Arbeit wiederherstellen, falls etwas mit dem Terminal schieflief

Der VI-Editor bearbeitet eine tempor�re Kopie Deiner Datei. Nachdem die Bearbeitung fertig ist, oder wenn Du die Datei speicherst, wird der Inhalt der tempor�ren Kopie in die Originaldatei geschrieben. Wenn irgend etwas w�hrend der Bearbeitung schief geht, versucht der VI den aktuellen Stand f�r eine sp�tere Wiederherstellung zu sichern. (Anmerkung: Wenn der VI w�hrend der Arbeit an einer Datei abbricht, sendet er Dir eine Mail-Nachricht, wie die Datei wieder herzustellen ist). Die Option -r steht f�r Wiederherstellung (recovery. Wenn Du die Datei vitalinfo bearbeitet hast, als Du versehentlich abgemeldet wurdest, dann kann die Option -r helfen. Der Befehl dazu sieht dann so aus: vi -r vitalinfo Nach der Nutzung der Option -r, must Du das, was wiederhergestellt wurde in die aktuelle Datei speichern... Die Option -r funktioniert nur einmal pro gescheiterter VI-Sitzung.

Warnung hinsichtlich der Nutzung des VI auf Workstations

Da sind zwei Dinge, die bei der Arbeit von Workstations aus zu beachten sind: Eine Datei mehrfach zu bearbeiten und die Gr��e des Bildschirms �ndern.

Der VI bearbeitet eine Kopie der Originaldatei und deren Inhalt wird sp�ter in die Originaldatei gespeichert. Wenn Du nun mehr als einmal angemeldet bist und Du die gleiche Datei mehr als einmal mit dem VI bearbeitest, und Du dann zun�chst die Datei der einen Sitzung speicherst und dann die der anderen, werden die �nderungen der ersten Datei �berschrieben. Deshalb stelle sicher, dass Du nur eine Kopie des VI mit derselben Datei startest.

Falls Du ein Terminalprogramm von einer Workstation benutzt, kannst die die Gr��e des Bildschirms durch Ziehen der Fensterr�nder ver�ndern. Falls die neue Gr��e nicht erkannt wird, mu�t Du folgenden Befehl verwenden:

    eval `resize`
Falls das nicht funktioniert, lautet der Befehl:
    eval `/usr/bin/X11R6/resize`
Aber das sollte nur ein sehr selten auftretendes Problem sein, besonders mit modernen Versionen des VI wie zum Beispiel Vim.

Zusammenfassung der VI-Befehle

Diese Liste ist eine Zusammenfassung der VI-Befehle, nach ihrer Funktion geordnet. Es k�nnen noch weitere Befehle zur Verf�gung stehen, deshalb siehe auch das Online-Handbuch des VI. Zum einfacheren Nachschlagen kannst Du diese Datei als Textdatei speichern und alle Befehle herausl�schen, von denen Du meinst, dass Du sie nicht brauchen wirst, und die so verk�rzte Datei ausdrucken.

Ausschneiden und Einf�gen/L�schen von Text

"
Gibt die Zwischenablage an, die f�r ein Kommando, das Zwischenablagen anspricht, benutzt werden soll. Gib nach dem " einen Buchstaben oder eine Ziffer ein, die die Zwischenablage bezeichnet.
D
L�sche von der aktuellen Position bis zum Ende der Zeile.
P
F�ge den Inhalt der angegebenen Zwischenablage vor die aktuelle Schreibposition oder Zeile ein. Wenn keine Zwischenablage angegeben wurde (mit dem " Befehl), dann wird die allgemeine Zwischenablage benutzt.
X
L�sche das Zeichen vor der Schreibmarke.
Y
Kopiere die aktuelle Zeile in die angegebene Zwischenablage. Wenn keine Zwischenablage angegeben ist, wird die allgemeine Zwischenablage benutzt.
d
L�sche bis Ort. "dd" l�scht die aktuelle Zeile. Eine Zahl l�scht entsprechend viele Zeilen. Das, was gel�scht wurde, wird in die Zwischenablage kopiert, die mit dem "-Befehl angegeben wurde. Falls keine Zwischenablage angegeben wurde, wird die allgemeine Zwischenablage benutzt.
p
F�gt die angegebene Zwischenablage hinter die aktuelle Schreibposition oder Zeile ein. Falls keine Zwischenablage angegeben wurde, wird die allgemeine Zwischenablage benutzt.
x
L�scht das Zeichen unter der Schreibmarke. Eine Zahl bestimmt, wieviele Zeichen gel�scht werden sollen. Die Zeichen werden hinter der Schreibmarke gel�scht.
y
Kopiere in die Zwischenablage bis Ort, "yy" kopiert die ganze Zeile, eine Zahl kopiert entsprechend viele Zeilen. Die Zwischenablage kann mit dem "-Befehl angegeben werden. Falls keine Zwischenablage angegeben wurde, wird die allgemeine Zwischenablage benutzt.

Neuen Text einf�gen

A
Ans Ende der aktuellen Zeile einf�gen.
I
Am Beginn der aktuellen Zeile einf�gen.
O
(Buchstabe oh) Einf�gemodus beginnen, wobei eine neue leere Zeile �ber der aktuellen erzeugt wird.
a
Einf�gemodus hinter der Schreibmarke beginnen. Falls vorher eine Anzahl angegeben wurde, wird der Text entsprechend oft eingef�gt.
i
Einf�gemodus beginnen. Der eingef�gze Text wird vor die Schreibmarke eingef�gt. Eine vorher eingegebene Anzahl bewirkt eine entsprechende Wiederholung des eingegebenen Textes.
o
Einf�gemodus beginnen, indem eine neue leere Zeile unter der aktuellen erzeugt wird.

Die Schreibmarke in der Datei bewegen

^B
Eine Seite zur�ckbl�ttern. Eine eingegebene Anzahl bl�ttert entsprechend viele Seiten zur�ck.
^D
Eine halbe Fensterh�he vorbl�ttern. Eine eingegebene Anzahl bl�ttert entsprechend viele Zeilen vorw�rts.
^F
Eine Seite vorbl�ttern. Eine eingegebene Anzahl bl�ttert entsprechend viele Seiten vor.
^H
Bewegt die Schreibmarke um ein Zeichen nach links. Eine angegebene Anzahl bewegt die Schreibmarke um entsprechend viele Zeichen.
^J
Bewegt die Schreibmarke in der gleichen Spalte eine Zeile nach unten. Eine angegebene Anzahl bewegt die Schreibmarke um entsprechend viele Zeilen.
^M
Zum ersten Zeichen der n�chsten Zeile springen.
^N
Bewegt die Schreibmarke in der gleichen Spalte eine Zeile nach unten. Eine angegebene Anzahl bewegt die Schreibmarke um entsprechend viele Zeilen.
^P
Bewegt die Schreibmarke in der gleichen Spalte eine Zeile nach oben. Eine angegebene Anzahl bewegt die Schreibmarke um entsprechend viele Zeilen.
^U
Eine halbe Fensterh�he zur�ckbl�ttern. Eine eingegebene Anzahl bl�ttert entsprechend viele Zeilen zur�ck.
$
Bewegt die Schreibmarke zum Ende der Zeile. Eine angegebene Anzahl bewegt die Schreibmarke ans Ende der entsprechenden Zeile.
%
Bewegt die Schreibmarke zur passenden �ffnenden oder schlie�enden Klammer.
^
Bewegt die Schreibmarke auf das erste Zeichen der Zeile, das kein Leerzeichen ist.
(
Bewegt die Schreibmarke an den Anfang eines Satzes.
)
Bewegt die Schreibmarke an den Anfang des n�chsten Satzes.
{
Bewegt die Schreibmarke zum vorherigen Absatz.
}
Bewegt die Schreibmarke zum n�chsten Absatz.
|
Bewegt die Schreibmarke zur durch eine Anzahl spezifizierte Spalte.
+
Bewegt die Schreibmarke zum ersten Nicht-Leerzeichen in der folgenden Zeile.
-
Bewegt die Schreibmarke zum ersten Nicht-Leerzeichen in der vorherigen Zeile.
_
Bewegt die Schreibmarke auf das erste Zeichen der Zeile, das kein Leerzeichen ist.
0
(Null) Bewegt die Schreibmarke in die erste Spalte der aktuellen Zeile.
B
Bewegt die Schreibmarke ein Wort zur�ck. �berspringt Satzzeichen.
E
Bewegt die Schreibmarke ein Wort vor. �berspringt Satzzeichen.
G
Springt zu einer durch eine Anzahl angegebene Zeile. Falls keine Zeilenzahl angegeben ist, springt der VI zum Ende der Datei.
H
Springt zum ersten Nicht-Leerzeichen auf dem Bildschirm.
L
Springt zum letzten Nicht-Leerzeichen auf dem Bildschirm.
M
Springt zum Nicht-Leerzeichen in der Mitte desBildschirms.
W
Bewegt die Schreibmarke zum Beginn des n�chsten Wortes, �berspringt Satzzeichen.
b
Bewegt die Schreibmarke ein Wort zur�ck. Falls die Schreibmarke in der Mitte eines Wortes steht, wird auf den letzten Buchstaben des Wortes gesprungen.
e
Bewegt die Schreibmarke ein Wort vor. Falls die Schreibmarke in der Mitte eines Wortes steht, wird auf den letzten Buchstaben des Wortes gesprungen.
h
Bewegt die Schreibmarke um ein Zeichen nach links.
j
Bewegt die Schreibmarke um eine Zeile nach unten.
k
Bewegt die Schreibmarke um eine Zeile nach oben.
l
Bewegt die Schreibmarke um ein Zeichen nach rechts.
w
Bewegt die Schreibmarke um ein Wort vorw�rts. Falls die Schreibmarke in der Mitte eines Wortes steht, wird zum ersten Buchstaben des n�chsten Wortes gesprungen.

Die Schreibmarke auf dem Bildschirm bewegen

^E
Eine Zeile vorw�rts rollen. Eine angegebene Anzahl rollt entsprechend viele Zeilen.
^Y
Eine Zeile r�ckw�rts rollen. Eine angegebene Anzahl rollt entsprechend viele Zeilen.
z
Zeichnet den Bildschirm auf folgende Arten neu:
"z<return>" setzt die aktuelle Zeile an den Beginn des Bildschirms. "z." setzt die aktuelle Zeile in die Mitte des Bildschirms; und "z-" setzt die aktuelle Zeile an das Ende des Bildschirms. Wenn Du eine Anzahl angibst, wird die entsprechende Zeile positioniert. Wenn Du zum Beispiel "16z." angibst, wird die Zeile 16 in die Mitte des Bildschirms positioniert.

Text ersetzen

C
�ndert bist zum Ende der Zeile, ausgehend von der aktuellen Schreibposition.
R
Ersetzt die Zeichen auf dem Bildschirm mit denen, die eingetippt werden. Ende mit der Esc-Taste.
S
Die ganze Zeile �ndern.
c
�ndert bis Ort. "cc" �ndert die aktuelle Zeile. Eine Anzahl �ndert entsprechend viele Zeilen.
r
Ersetzt ein Zeichen unter der Schreibmarke. Eine angegebene Anzahl �ndert entsprechend viele Zeichen.
s
Ersetzt das Zeichen unter der Schreibmarke und wechselt in den Einf�gemodus. Gib eine Anzahl an, um entsprechend viele Zeichen zu ersetzen. Ein Dollar-Zeichen ($) wird auf das letzte Zeichen, das ersetzt wird, gesetzt.

Nach Text oder Buchstaben suchen

,
Wiederhole den letzten f, F, t oder T Befehl in umgekehrter Richtung.
/
Suche in der Datei abw�rts nach der Zeichenkette, die hinter dem / eingegeben wurde.
;
Wiederhole den letzten f, F, t oder T Befehl.
?
Suche in der Datei nach oben nach der Zeichenkette, die hinter dem ? eingegeben wurde.
F
Suche in der Datei abw�rts nach der Zeichenkette, die hinter dem F eingegeben wurde. Wenn sie gefunden wurde, bewege die Schreibmarke zur Fundstelle.
N
Wiederhole die letzte Suche von '/' oder '?', allerdings in umgekehrter Suchrichtung.
T
Suche in der aktuellen Zeile r�ckw�rts nach dem Zeichen, das nach dem 'T'-Befehl eingegeben wurde und bewege die Schreibmarke hinter die Fundstelle, wenn es gefunden wurde.
f
Suche in der aktuellen Zeile vorw�rts nach dem Zeichen, das nach dem 'f'-Befehl eingegeben wurde und bewege die Schreibmarke auf die Fundstelle, wenn es gefunden wurde.
n
Wiederholde die letzte Suche von '/' oder '?'.
t
Suche in der aktuellen Zeile vorw�rts nach dem Zeichen, das nach dem 't'-Befehl eingegeben wurde und bewege die Schreibmarke vor die Fundstelle, wenn es gefunden wurde.

Zeichen ver�ndern/Zeilen formatieren

~
Schalte die Gro�- oder Kleinschreibung des Buchstabens unter der Schreibmarke um.
<
R�ckt die Zeilen bis Ort mit einer Einr�ckungstiefe nach links ein. "<<"r�ckt die aktuelle Zeile nach links ein und kann mit einer Anzahl angegeben werden.
>
R�ckt die Zeilen bis Ort mit einer Einr�ckungstiefe nach rechts ein. ">>"r�ckt die aktuelle Zeile nach rechts ein und kann mit einer Anzahl angegeben werden.
J
Vereinigt die aktuelle Zeile mit der folgenden. Eine angegebene Anzahl vereinigt entsprechend viele Zeilen.

Speichern und Beenden

^\
Beendet den "VI"-Modus und wechselt in den "EX"-Modus. Der EX-Editor ist der Zeileneditor, auf den der VI aufbaut. Der EX-Befehl, um wieder zum VI zur�ckzukehren, lautet ":vi".
Q
Beendet den "VI"-Modus und wechselt in den "EX"-Modus. Der EX-Editor ist ein Zeileneditor. Der EX-Befehl, um wieder zum VI zur�ckzukehren, lautet ":vi".
ZZ
Den Editor beenden, dabei werden alle �nderungen gespeichert.

Verschiedenes

^G
Zeigt den aktuellen Dateinamen und des Status.
^L
L�scht und zeichnet den Bildschirm neu.
^R
Zeichnet den Bildschirm neu und entfernt kaputte Zeilen.
^[
Escape. Bricht einen teilweise eingegebenen Befehl ab.
^^
Schaltet zur zuletzt bearbeiteten Datei zur�ck.
!
F�hrt eine Shell aus. Wenn ein Ort angegeben ist, �bernimmt das mittels ! ausgef�hrte Programm die angegebenen Zeilen als Standardeingabe und ersetzt diese Zeilen mit seiner Standardausgabe. "!!" f�hrt das Programm mit der aktuellen Zeile aus. "!4jsort" �bernimmt zum Beispiel die 5 Zeilen einschlie�lich der aktuellen Zeile und sortiert sie.
&
Wiederholt das vorhergehende ":s" Kommando.
.
Wiederholt den letzten Befehl, der die Datei ver�ndert hat
:
Startet die Eingabe eines EX-Editor Befehls. Der Befehl wird ausgef�hrt, wenn der Anwender [Enter] dr�ckt. (siehe den Abschnitt unten)
@
Gibt den Befehl des angegebenen Puffers aus.
U
Stellt die aktuelle Zeile in den Zustand wieder her, den sie hatte, als die Schreibmarke die Zeile betrat.
m
Markiert die aktuelle Position mit dem Zeichen, das nach dem 'm' eingegeben wird.
u
Macht die letzten �nderungen der Datei r�ckg�ngig. Erneutes Dr�cken von 'u' stellt die �nderung wieder her.

EX Befehle

Der VI-Editor baut auf einem anderen Editor namens EX auf. Der EX-Editor ist ein Zeileneditor. Vom VI aus benutzt der Anwender den ":" Befehl, um einen EX-Befehl einzugeben. Die folgende Liste ist keine komplette Aufstellung, aber die aufgef�hrten Befehle sind die am h�ufigsten gebrauchten. Wenn mehr als eine zu �ndernde Zeile bei bestimmten Befehlen (wie ":s" und ":w") angegeben werden mu�, gibt man den entsprechenden Bereich vor dem Befehl an. Um zum Beispiel in den Zeilen 3 bis 15 etwas zu ersetzen, lautet der Befehl: ":3,15s/from/this/g".

:ab abkz ganzerText
Abk�rzung. Wenn ein Wort im VI eingetippt wird, dass abkz lautet, ersetzt es der Editor automatisch mit ganzerText. Wenn zum Beispiel folgende Abk�rzung definiert wird: ":ab usa United States of America", dann wird "United States of America" immer dann hingeschrieben, wenn das Wort "usa" eingegeben wurde.
:map keys new_seq
Tastaturbelegung. Hiermit kann man eine Taste oder eine Tastenfolge mit einer anderen belegen.
:q
VI beenden. Falls �nderungen noch nicht gespeichert sind, wird der VI eine Warnung ausgeben.
:q!
Den VI beenden, ohne �nderungen zu speichern.
:s/muster/zu_muster/optionen
Ersetzung. Hier wird das angegebene "muster" mit "zu_muster" ersetzt. Ohne weitere Optionen wird nur das erste Auftauchen von "muster" ersetzt. Wenn die Option 'g' angegeben wird, werden alle Vorkommen ersetzt. Beispiel: ":1,$s/Dwayne/Dwight/g" ersetzt alle Vorkommen von "Dwayne" zu "Dwight".
:set [all]
Setzt einige Einstellungsoptionen des VI und des EX. Der ":set all" Befehl zeigt alle m�glichen Optionen. (siehe den Abschnitt "Einstellungen des VI")
:una string
Entfernt die Abk�rzung, die vorher mittels ":ab" definiert wurde.
:unm keys
Entfernt die Tastenbelegung die durch ":map" definiert wurde.
:vi filename
Startet die Bearbeitung einer neuen Datei. Falls �nderungen noch nicht gespeichert wurden, gibt der Editor eine Warnung aus.
:w
Schreibt die aktuelle Datei auf den Datentr�ger.
:w filename
Schreibt den Puffer in die angegebene Datei.
:w >> filename
H�ngt den Inhalt des Puffers an die angegebene Datei an.
:wq
Sichert den Puffer und beendet den Editor.

Verweise