vi(1) vi(1)
NAME
vi, view, vedit - Bildschirmorientierter Editor (visual)
SYNTAX
vi[ option]...[ datei]...
view[ option]...[ datei]...
vedit[ option]...[ datei]...
BESCHREIBUNG
Aufbau
Die Gesamt-Beschreibung des vi gliedert sich in folgende Teile:
⊕ Optionen
⊕ Kommandoübersicht (Auszug)
⊕ Einführung
⊕ Modi des vi
- Kommandomodus
- Eingabemodus
- Zeilen-Kommandomodus
- ex-Kommandomodus
- ex-Eingabemodus
⊕ Bildschirmaufbau
⊕ Arbeitsweise
- Puffer sichern und vi verlassen
- Editorpuffer des vi
- Positionieranweisungen des vi
⊕ Kommandos
- Definitionen
- Control-Kommandos
- Kommandos des vi-Kommandomodus
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
vi(1) vi(1)
⊕ Anpassung an die Datensichtstation
- Voreinstellung des vi
⊕ Dateien
⊕ Umgebungsvariablen
⊕ Internationale Umgebung
⊕ Siehe auch
Der vi (visual) ist ein bildschirmorientierter Texteditor. Nach dem
Aufruf befindet sich der vi im vi-Kommandomodus. Falls Sie in den vi-
Eingabemodus gewechselt haben, kehren Sie durch Drücken von ESCAPE
(bzw. DEL) wieder in den vi-Kommandomodus zurück.
OPTIONEN
-t markierung
(t - tag) Die Datei mit markierung wird zum Editieren aufgerufen.
Der Editor positioniert die Zeile mit der Definition der Markie-
rung in die Mitte des Bildschirms. Im gleichen Dateiverzeichnis
muß eine Datei tags vorhanden sein, die Suchzeichenketten für die
Definitionen enthält. Diese Option hilft u. a. C-Programmierern,
die beim Editoraufruf sofort auf die Definition einer Funktion
oder eines Makros positionieren wollen. Die dafür benötigte Mar-
kierungsdatei muß vorher mit dem Kommando ctags(1) erzeugt worden
sein.
-l (l - lisp) Der Lisp-Modus wird eingeschaltet. Der Text wird so
eingerückt, daß er ein für Lisp-Programme typisches Aussehen
bekommt.
Die folgenden vi-Kommandos haben für Lisp eine eigene Bedeutung:
(, ), {, }, [[ und ]].
-r datei
(r - recover) Mit dieser Option -r können Sie Ihre Sitzung wiede-
rherstellen, falls das System oder der vi während der vorherge-
henden Sitzung abgestürzt sind.
Bei einem Absturz des Systems oder des vi-Editors werden die
Änderungen, die nur im Editorpuffer stehen, nicht in die Datei
geschrieben. Das Betriebssystem Reliant UNIX versucht jedoch, den
Inhalt des Puffers zu retten, indem eine Kopie des Pufferinhalts
angelegt wird, sofern dies möglich ist. datei wird mit den Ände-
rungen, die Sie vor dem Absturz gemacht haben, in den vi-Puffer
geholt. Sie können nun die Datei weiter editieren oder die Ände-
rungen in eine beliebige Datei schreiben.
-L (L - List) Nach einem Absturz des Systems oder des Editors wird
eine Liste aller geretteten Dateien ausgegeben.
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
vi(1) vi(1)
-R (R - Read-only) datei wird nur zum Lesen geöffnet. Damit können
Sie ein versehentliches Überschreiben von datei verhindern.
Vorsicht:
Die Datei kann mit dem ex-Kommando w! dennoch überschrieben wer-
den.
-wn (w - window) Der Bildschirm wird aus n Textzeilen aufgebaut.
-wn nicht angegeben:
Die Bildschirmlänge wird durch die Umgebungsvariable LINES fest-
gelegt. Ist diese nicht definiert, wird der Wert für die Anzahl
der in der Datei terminfo zur Definition der Bildschirmausgabe
herangezogen
-c kommando
(c - command) Mit dieser Option können Sie beim Aufruf des vi ein
ex-Kommando ausführen. Wenn Sie beim Aufruf des vi ein
Positionier-Kommando angeben, steht die gewünschte Zeile danach
in der Mitte des Bildschirms. Wenn Sie ein ex-Kommando ausführen,
wird nach Ausführung des ex-Kommandos auf die letzte Zeile der
Datei positioniert, sofern das ex-Kommando (z. B. ein Suchvor-
gang) nichts anderes bewirkt.
kommando nicht angegeben:
Der vi gibt eine usage-Meldung aus und bricht ab.
kommando angegeben:
kommando kann entweder eine Zeilenangabe (n) sein, ein Suchkom-
mando (/muster, siehe Abschnitt Kommandos des vi-Kommandomodus)
oder ein sonstiges Kommando des ex ("ex-kommando" oder 'ex-
kommando'). Es wird beim Aufruf des vi ausgeführt:
n n ist eine ganze Zahl. vi positioniert auf die n-te Zeile
der Datei.
/muster
vi positioniert auf die Zeile, die muster enthält. muster
ist ein einfacher regulärer Ausdruck [siehe expressions(5)].
Falls muster Sonderzeichen enthält, müssen Sie die Sonder-
zeichen jeweils mit einem Gegenschrägstrich \ entwerten oder
muster in Hochkommas 'muster' einschließen, damit die Shell
die Sonderzeichen nicht interpretiert.
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98
vi(1) vi(1)
'ex-kommando'
"ex-kommando"
ex-kommando kann ein beliebiges ex-Kommando sein. Das ex-
Kommando muß in Hochkommas oder Anführungszeichen einge-
schlossen werden, damit es von der Shell nicht interpretiert
wird. Falls nicht schon durch das ex-Kommando positioniert
wird, positioniert der vi auf die letzte Zeile der Datei.
Beispiel:
Nach dem Aufruf des vi mit
vi -c "set number showmode" termine
wird die Datei termine geöffnet, die Schreibmarke auf die
letzte Zeile der Datei positioniert, und auf dem Bildschirm
werden Zeilennummern sowie der vi-Modus angezeigt (vgl. das
Beispiel bei ex).
-x Verschlüsselungsoption: vi führt beim Aufruf das ex-Kommando X
aus und fragt Sie nach einem Schlüssel. Dieser Schlüssel wird
dann zum Codieren und Decodieren von Text durch den Algorithmus
des Kommandos crypt verwendet. vi klärt ab, ob der einzulesende
Text verschlüsselt ist oder nicht. Die temporäre Pufferdatei wird
ebenfalls mit einer Transformation des eingegebenen Schlüssels
codiert [siehe crypt(1)].
-C Verschlüsselungsoption: Das Kommando C entspricht dem Kommando X
mit folgendem Unterschied: es wird angenommen, daß jeder zu
lesende Text verschlüsselt ist [siehe crypt(1)].
datei
Name der zu editierenden Datei. Sie können mehrere Dateien ange-
ben. vi beginnt dann mit der ersten angegebenen Datei. Mit dem
ex-Kommando n können Sie in die nächste Datei wechseln (siehe
auch ex-Kommandos rew und ar). Wenn Sie keine Datei angeben,
arbeiten Sie zunächst mit einem leeren Editorpuffer. Den Inhalt
dieses Puffers können Sie dann mit dem ex-Kommando w datei in die
Datei datei schreiben.
Seite 4 Reliant UNIX 5.44 Gedruckt 11/98
vi(1) vi(1)
KOMMANDOÜBERSICHT (Auszug)
In der folgenden Übersicht sind die gebräuchlichsten vi-Kommandos in
Funktionsgruppen zusammengefaßt. Im Abschnitt KOMMANDOS finden Sie
eine ausführliche Beschreibung in alphabetischer Reihenfolge.
______________________________________________________________________
| vi laden |
|_____________|_______________________________________________________|
| viCR | vi mit leerem Editorpuffer aufrufen |
|_____________|_______________________________________________________|
| vi datei CR | vi mit der zu editierenden datei laden |
|_____________|_______________________________________________________|
______________________________________________________________________
| vi beenden |
|_____________|_______________________________________________________|
| ZZ | vi verlassen, Editorpuffer in die editierte Datei |
| | schreiben; wie :wq CR |
|_____________|_______________________________________________________|
| :wCR | Editorpuffer in editierte Datei schreiben |
|_____________|_______________________________________________________|
| :w datei CR | Editorpuffer in datei schreiben |
|_____________|_______________________________________________________|
| :qCR | vi verlassen falls Änderungen gesichert |
|_____________|_______________________________________________________|
| :q! CR | vi verlassen, Änderungen gehen verloren |
|_____________|_______________________________________________________|
| :wq CR | vi verlassen, Editorpuffer in die editierte Datei |
| | schreiben; wie ZZ |
|_____________|_______________________________________________________|
Seite 5 Reliant UNIX 5.44 Gedruckt 11/98
vi(1) vi(1)
______________________________________________________________________
| Schreibmarke positionieren |
|_____________|_______________________________________________________|
| h | ein Zeichen nach links |
|_____________|_______________________________________________________|
| j | in der gleichen Spalte eine Zeile vor |
|_____________|_______________________________________________________|
| + | eine Zeile vor, an Zeilenanfang |
|_____________|_______________________________________________________|
| CR | eine Zeile vor, an Zeilenanfang |
|_____________|_______________________________________________________|
| k | in der gleichen Spalte eine Zeile zurück |
|_____________|_______________________________________________________|
| - | eine Zeile zurück, an Zeilenanfang |
|_____________|_______________________________________________________|
| l | ein Zeichen nach rechts |
|_____________|_______________________________________________________|
| H | Bildschirmanfang |
|_____________|_______________________________________________________|
| M | Bildschirmmitte |
|_____________|_______________________________________________________|
| L | Bildschirmende |
|_____________|_______________________________________________________|
| 0 | Bildschirmrand links |
|_____________|_______________________________________________________|
| | | Bildschirmrand links |
|_____________|_______________________________________________________|
| $ | letztes Zeichen der Zeile |
|_____________|_______________________________________________________|
| ^ | erstes Zeichen der Zeile, das nicht Leerzeichen oder |
| | Tabulator ist |
|_____________|_______________________________________________________|
| w | Wortanfang des nächsten Wortes |
|_____________|_______________________________________________________|
| e | Wortende des nächsten Wortes |
|_____________|_______________________________________________________|
| b | Wortbeginn des vorhergehenden Wortes |
|_____________|_______________________________________________________|
| W | Wortanfang des nächsten Wortes (Langwort) |
|_____________|_______________________________________________________|
| E | Wortende des nächsten Wortes (Langwort) |
|_____________|_______________________________________________________|
| B | Wortbeginn des vorhergehenden Wortes (Langwort) |
|_____________|_______________________________________________________|
Seite 6 Reliant UNIX 5.44 Gedruckt 11/98
vi(1) vi(1)
______________________________________________________________________
| Fenster positionieren |
|_____________|_______________________________________________________|
| CTRL-d | halben Bildschirm vorwärts |
|_____________|_______________________________________________________|
| CTRL-u | halben Bildschirm zurück |
|_____________|_______________________________________________________|
| CTRL-f | einen Bildschirm vorwärts |
|_____________|_______________________________________________________|
| CTRL-b | einen Bildschirm zurück |
|_____________|_______________________________________________________|
| CTRL-e | eine Zeile vorwärts |
|_____________|_______________________________________________________|
| CTRL-y | eine Zeile zurück |
|_____________|_______________________________________________________|
| z CR | aktuelle Zeile an Bildschirmanfang |
|_____________|_______________________________________________________|
| z. | aktuelle Zeile an Bildschirmmitte |
|_____________|_______________________________________________________|
| z- | aktuelle Zeile an Bildschirmende |
|_____________|_______________________________________________________|
| 1G | Dateianfang |
|_____________|_______________________________________________________|
| nG | Zeile n auf Bildschirmmitte |
|_____________|_______________________________________________________|
| G | Dateiende |
|_____________|_______________________________________________________|
Seite 7 Reliant UNIX 5.44 Gedruckt 11/98
vi(1) vi(1)
______________________________________________________________________
| Textteile löschen und zurückholen |
|_____________|_______________________________________________________|
| x | löscht Zeichen an der Position der Schreibmarke |
|_____________|_______________________________________________________|
| X | löscht Zeichen links von der Schreibmarke |
|_____________|_______________________________________________________|
| dd | löscht aktuelle Zeile |
|_____________|_______________________________________________________|
| dG | löscht ab aktuelle Zeile bis Dateiende |
|_____________|_______________________________________________________|
| dH | löscht ab Bildschirmanfang bis einschließlich der |
| | aktuellen Zeile |
|_____________|_______________________________________________________|
| D | löscht Zeilenrest ab Schreibmarke |
|_____________|_______________________________________________________|
| u | gelöschten Text aus Standardpuffer zurückholen |
|_____________|_______________________________________________________|
| U | aktuelle Zeile wieder herstellen |
|_____________|_______________________________________________________|
| p | Inhalt des Puffers hinter aktuelle Position der |
| | Schreibmarke schreiben |
|_____________|_______________________________________________________|
| P | Inhalt des Puffers vor aktuelle Position der Schreib-|
| | marke schreiben |
|_____________|_______________________________________________________|
Seite 8 Reliant UNIX 5.44 Gedruckt 11/98
vi(1) vi(1)
______________________________________________________________________
| Textteile ändern |
|_____________|_______________________________________________________|
| r | ersetzt aktuelles Zeichen durch nächste Eingabe |
|_____________|_______________________________________________________|
| R | ab aktuellem Zeichen Text überschreiben |
|_____________|_______________________________________________________|
| o | nach aktueller Zeile Leerzeile einfügen |
|_____________|_______________________________________________________|
| O | vor aktueller Zeile Leerzeile einfügen |
|_____________|_______________________________________________________|
| a | Text nach aktuellem Zeichen einfügen |
|_____________|_______________________________________________________|
| A | Text am Zeilenende anfügen |
|_____________|_______________________________________________________|
| i | Text an der aktuellen Schreibmarkenposition einfügen |
|_____________|_______________________________________________________|
| I | Text am Zeilenanfang einfügen |
|_____________|_______________________________________________________|
______________________________________________________________________
| Kopieren |
|_____________|_______________________________________________________|
| Y | aktuelle Zeile merken |
|_____________|_______________________________________________________|
| yy | aktuelle Zeile merken |
|_____________|_______________________________________________________|
| Yp | aktuelle Zeile verdoppeln |
|_____________|_______________________________________________________|
| yyp | aktuelle Zeile verdoppeln |
|_____________|_______________________________________________________|
| :10,13t 20 | Zeilen 10 bis 13 ab neuer Zeile 21 einfügen |
|_____________|_______________________________________________________|
| :.t. | aktuelle Zeile verdoppeln |
|_____________|_______________________________________________________|
| :t. | aktuelle Zeile verdoppeln |
|_____________|_______________________________________________________|
| :r datei | Inhalt von datei hinter aktuelle Zeile kopieren |
|_____________|_______________________________________________________|
Seite 9 Reliant UNIX 5.44 Gedruckt 11/98
vi(1) vi(1)
______________________________________________________________________
| Übertragen |
|_____________|_______________________________________________________|
| 3dd | 3 Zeilen löschen, einschließlich der aktuellen |
| | Zeile |
|_____________|_______________________________________________________|
| p | gespeicherte Zeilen einfügen |
|_____________|_______________________________________________________|
| "a3dd | 3 Zeilen löschen und in Puffer a ablegen |
|_____________|_______________________________________________________|
| "ap | gespeicherte Zeilen nach aktueller Zeile einfügen |
|_____________|_______________________________________________________|
______________________________________________________________________
| Suchen und ersetzen |
|_____________________|_______________________________________________|
| /xyz | im ganzen Editorpuffer nach xyz vorwärts |
| | suchen |
|_____________________|_______________________________________________|
| /xyz<blank><blank>/ | im ganzen Editorpuffer nach xyz und 2 Leer- |
| | zeichen suchen |
|_____________________|_______________________________________________|
| :s/xyz/abc/ | in aktueller Zeile xyz durch abc ersetzen |
|_____________________|_______________________________________________|
| :/alt/s/alt/neu | erst alt suchen, dann alt durch neu ersetzen |
|_____________________|_______________________________________________|
| :1,$s/alt/neu/g | im ganzen Editorpuffer alt durch neu ersetzen|
|_____________________|_______________________________________________|
EINFÜHRUNG
Der vi stellt auf dem Bildschirm in der Regel 23 Zeilen der zu editie-
renden Datei dar. Sie lassen sich Ausschnitte der Datei anzeigen,
indem Sie dieses Fenster verschieben. vi bietet Ihnen eine breite
Palette von Möglichkeiten zur Textedition. Sie können:
- Text erstellen, ändern, kopieren und löschen
- die Schreibmarke mittels einfacher Kommandos positionieren (z. B.
auf den Anfang oder das Ende eines Wortes, einer Zeile, eines Sat-
zes, eines Absatzes oder der Datei)
- Textmuster mit regulären Ausdrücken suchen und ersetzen
- eine Subshell aufrufen
- mit einem Reliant UNIX Kommando einen Bereich der aktuellen Datei
bearbeiten
- mehrere Dateien während einer Sitzung bearbeiten und Text von einer
Datei in eine andere kopieren
Seite 10 Reliant UNIX 5.44 Gedruckt 11/98
vi(1) vi(1)
- eine Datei wiederherstellen, die durch eine Unterbrechung während
einer Sitzung verlorenging
Der vi ist eine erweiterte Form des Zeileneditors ex (siehe ex). Sie
können zwischen diesen beiden Editoren hin- und herwechseln und vom vi
aus ex-Kommandos ausführen.
view verhält sich wie vi, außer daß datei nur zum Lesen geöffnet ist
und nicht verändert werden darf.
vedit ist eine spezielle Version von vi für Anfänger. vedit verhält
sich wie vi, wenn die Optionen report=1, showmode, nomagic sowie
novice gesetzt sind (zu den Optionen siehe ex).
Modi des vi
Der vi stellt Ihnen verschiedene Modi zur Verfügung, in denen Sie
arbeiten können:
- vi-Kommandomodus
- vi-Eingabemodus
- vi-Zeilen-Kommandomodus
- ex-Kommandomodus
- ex-Eingabemodus
Nach Aufruf des vi befinden Sie sich immer im vi-Kommandomodus. Von
dort aus können Sie in die anderen Modi wechseln. Je nach Modus inter-
pretiert der vi Ihre Tastatureingabe unterschiedlich.
vi-Kommandomodus
Nachdem Sie den vi aufgerufen haben, befindet sich der vi im vi-
Kommandomodus. In diesem Modus ist keine Texteingabe möglich. Jede
Eingabe über die Tastatur wird sofort als vi-Kommando interpretiert,
ohne daß sie am Bildschirm ausgegeben wird. Handelt es sich dabei um
ein zulässiges Kommando, wird es ausgeführt, und das Ergebnis ist
sofort am Bildschirm sichtbar.
vi-Eingabemodus
Im Eingabemodus ergänzen oder ändern Sie Text im Editorpuffer. Den
Eingabemodus schalten Sie ein, wenn Sie eines der vi-Kommandos A, a,
C, c, I, i, O, o, S, s oder R eingeben (siehe im Abschnitt Kommandos,
Kommandos des vi-Kommandomodus). Alle folgenden Eingabezeichen, auch
verschiedene nicht druckbare Zeichen, werden auf den Bildschirm und in
den Editorpuffer geschrieben.
Seite 11 Reliant UNIX 5.44 Gedruckt 11/98
vi(1) vi(1)
Im Eingabemodus können Sie die meisten vi-Kommandos nicht verwenden.
Es gibt jedoch einige vi-Kommandos, die im Eingabemodus eine spezielle
Bedeutung haben. Diese sind:
ESCAPE
Eingabemodus verlassen, zurück in den vi-Kommandomodus.
DEL Eingabemodus abbrechen, zurück in den vi-Kommandomodus.
CR Neue Zeile.
CTRL-@
Zuletzt eingegebenen Text nochmals eingeben. Dieses Kommando
geben Sie ein, unmittelbar nachdem Sie in den Einfügemodus
gewechselt haben. vi fügt dann den beim letzten Einfügen eingege-
benen Text ein, falls dieser aus nicht mehr als 128 Zeichen
besteht. Danach wird automatisch zurück in den Kommandomodus
geschaltet.
CTRL-d
Wenn Sie eine automatische Einrückung definiert haben, können Sie
mit CTRL-d den linken Rand um eine Tabulatorposition nach links
positionieren. Die Schrittbreite können Sie mit der Option shift-
width festlegen. Dieses Kommando ist nur am Anfang einer neuen
Eingabezeile und mit gesetzter Option autoindent sinnvoll.
CTRL-h
Ein Zeichen zurück.
CTRL-t
Einen Tabulatorschritt nach rechts, entsprechend shiftwidth. Dies
ist nur am Anfang einer neuen Eingabezeile möglich.
CTRL-v
Nicht druckbare Zeichen einfügen.
CTRL-w
Ein Wort zurück.
\ Escape für Korrekturzeichen BACKSPACE.
vi-Zeilen-Kommandomodus
Im vi-Zeilen-Kommandomodus können Sie vi-, ex- und Reliant UNIX Kom-
mandos in der Statuszeile eingeben. Den Zeilen-Kommandomodus schalten
Sie durch Eingabe eines Doppelpunktes : oder eines Schrägstriches /
oder eines Fragezeichens ? ein. Eine weitere Möglichkeit ist die Ein-
gabe eines Ausrufezeichens !, gefolgt von einer Positionieranweisung
auf eine Zeile. Kommandoeingaben im Zeilen-Kommandomodus schließen Sie
mit CR oder ESCAPE ab. Mit DEL brechen Sie die Eingabe ab.
Vorsicht:
Seite 12 Reliant UNIX 5.44 Gedruckt 11/98
vi(1) vi(1)
Im vi-Zeilen-Kommandomodus löscht ESCAPE ein gerade eingegebenes Kom-
mando nicht, sondern schickt es ab. Das Kommando wird also ausgeführt!
Im vi-Zeilen-Kommandomodus müssen Sie DEL verwenden, um ein eingegebe-
nes Kommando zu löschen.
: Die Eingabe eines Doppelpunktes : im vi-Kommandomodus bewirkt,
daß die nachfolgende Eingabe bis zum nächsten ESCAPE oder CR
als ex-Kommando interpretiert wird. (Alle ex-Kommandos sind
unter ex, ex-Kommandos beschrieben.) Nach Eingabe des Doppel-
punktes springt die Schreibmarke in die unterste Zeile, die
Statuszeile. Der Doppelpunkt und das eingegebene Kommando wer-
den nun angezeigt. Sie können fast alle ex-Kommandos verwen-
den; ausgenommen sind davon jedoch solche ex-Kommandos, die
den ex in den ex-Eingabemodus schalten würden.
Für den Namen der im Editorpuffer befindlichen Datei kann das
Prozentzeichen % als Kurzbezeichnung verwendet werden. Das
Nummernzeichen # steht für den Namen der in der gleichen Sit-
zung vorher bearbeiteten Datei (siehe ex, Aktuelle und sekun-
däre Datei).
Beispiel:
:! diff # % CR
vi gibt auf die Standard-Ausgabe die Unterschiede zwischen der
vorher editierten Datei und der aktuellen Datei aus. Keine der
beiden Dateien wird verändert.
/ oder ?
Nach Eingabe eines Schrägstriches / bzw. Fragezeichens ?
springt die Schreibmarke in die Statuszeile. Geben Sie nun
einen regulären Ausdruck an, nach dem der vi vorwärts (bei
Einagbe von /) oder rückwärts (bei Eingabe von ?) sucht. Mit
dem vi-Kommando n wiederholen Sie die Suche in Suchrichtung,
mit N entgegen der Suchrichtung.
! Nach Eingabe eines Ausrufezeichens ! im vi-Kommandomodus
springt die Schreibmarke nicht sofort in die Statuszeile. Sie
tut dies erst, wenn Sie eine vi-Positionieranweisung auf eine
Zeile gegeben haben. Am Anfang der Statuszeile wird ein Ausru-
fezeichen ausgegeben. Geben Sie als Positionieranweisung ein
Ausrufezeichen ein, gilt als Position die aktuelle Zeile. Ihre
Positionieranweisung wird nicht angezeigt. Sie können nun ein
Reliant UNIX Kommando eingeben, das Sie mit CR oder ESCAPE
freigeben. Der Bereich von der aktuellen Zeile bis zur angege-
benen Position wird, falls das Reliant UNIX Kommando von der
Standard-Eingabe liest, zur Eingabe des Reliant UNIX Kommandos
und nach Ende des Kommandos durch die Ausgabe (Standard-
Ausgabe und Standard-Fehlerausgabe) des Reliant UNIX Kommandos
ersetzt. Falls das Kommando nichts ausgibt (z. B. true), wird
der angegebene Bereich gelöscht, also durch die leere
Seite 13 Reliant UNIX 5.44 Gedruckt 11/98
vi(1) vi(1)
Zeichenkette ersetzt.
ex-Kommandomodus
Den ex-Kommandomodus schalten Sie ein, indem Sie im vi-Kommandomodus
das Kommando Q eingeben. Damit verlassen Sie den bildschirmorientier-
ten vi und gelangen in den zeilenorientierten ex. Sie wechseln in den
vi zurück, indem Sie im ex-Kommandomodus das Kommando vi CR eingeben.
ex-Eingabemodus
Den ex-Eingabemodus schalten Sie ein, indem Sie im ex-Kommandomodus a,
i oder c eingeben. Alles, was Sie in diesem Modus eingeben, wird in
den Editorpuffer geschrieben. Sie beenden diesen Modus, indem Sie eine
einzelne Zeile mit einem Punkt in der ersten Spalte eingeben.
Die meisten ex-Kommandos können Sie auf zwei Arten eingeben:
- vom vi-Kommandomodus aus, indem Sie das vi-Kommando Doppelpunkt :
eingeben, gefolgt von dem gewünschten ex-Kommando
- vom ex-Kommandomodus aus
BILDSCHIRMAUFBAU
Ein zeichenorientierter Bildschirm einer Datensichtstation stellt in
der Regel 24 Zeilen und 80 Spalten dar. Davon werden standardmäßig 23
Bildschirm-Zeilen für die Darstellung des Textes der zu editierenden
Datei verwendet. In xterm-Sitzungen können mehr als 24 Zeilen darge-
stellt werden. Die Anzahl der vom vi verwendeten Bildschirmzeilen wird
in diesem Fall automatisch festgestellt.
Die unterste Zeile auf dem Bildschirm ist die Status- und Kommando-
zeile. Sie dient zur Eingabe von Kommandos und zur Ausgabe von Infor-
mationen und Meldungen des vi.
Falls eine Textzeile breiter ist als der Bildschirm, wird sie in der
nächsten Bildschirmzeile fortgesetzt.
vi verwendet zur Kennzeichnung des Zeilenstatus zwei Sonderzeichen,
die in der ersten Spalte der jeweiligen Zeile sichtbar sind:
~ Die Tilde ~ kennzeichnet Zeilen, die auf dem Bildschirm, aber nicht
im Editorpuffer vorhanden sind. Das sind Zeilen hinter dem Datei-
ende. Wenn sich z. B. die letzte Textzeile der Datei in der Mitte
des Bildschirms befindet, dann beginnen alle dahinterliegenden
Bildschirmzeilen mit ~. Sobald Sie in die erste so gekennzeichnete
Zeile Text eingeben, verschwindet die Tilde. Wenn Sie eine neue
oder leere Datei mit vi aufrufen, enthalten alle Bildschirmzeilen
bis auf die erste und die letzte (Statuszeile) dieses Zeichen.
@ Der Klammeraffe @ kennzeichnet Zeilen, die der vi auf dem Bild-
schirm nicht ordnungsgemäß darstellen kann. Dies kann zwei Ursachen
Seite 14 Reliant UNIX 5.44 Gedruckt 11/98
vi(1) vi(1)
haben:
- Eine Textzeile kann sich über mehrere Zeilen auf dem Bildschirm
erstrecken. Deshalb können Textzeilen im Editorpuffer vorhanden
sein, aber der Platz auf dem Bildschirm nach der letzten, noch
vollständig dargestellten Textzeile reicht nicht mehr für eine
weitere ganze Textzeile.
- Zeilenweises Löschen aus einer Datei kann dazu führen, daß die
Bildschirmdarstellung nicht mehr mit dem tatsächlichen Inhalt
des Editorpuffers übereinstimmt. In diesem Fall können Sie den
Bildschirm mit dem vi-Kommando CTRL-L neu aufbauen.
Die letzte Zeile auf dem Bildschirm ist die Statuszeile. Sie dient
zur:
- Eingabe von vi-Kommandos, die mit /, ?, ! oder : beginnen
- Ausgabe von Meldungen
- Ausgabe von ex-Kommandos
- Anzeige des Modus (Kommandomodus wird nicht angezeigt)
Akustisches Signal
Sie erhalten ein akustisches Signal wenn
- Sie im Kommandomodus die Taste ESCAPE oder DEL drücken
- Sie ein unerlaubtes Kommando verwenden
- vi ein Signal SIGINT erhält
Erhält der vi ein Signal SIGINT (DEL) während der Texteingabe oder
während der Eingabe eines Kommandos in der untersten Bildschirmzeile,
so wird die Eingabe beendet (bzw. das Kommando abgebrochen) und der
Editor wieder in den Kommandomodus geschaltet. Der Empfang eines Sig-
nals SIGINT im Kommandomodus bewirkt ein akustisches Signal.
ARBEITSWEISE
Der vi arbeitet immer mit einem Editorpuffer. Bei Beginn einer vi-
Sitzung wird eine Kopie der Datei, die Sie bearbeiten, im Editorpuffer
angelegt. Falls Sie keinen Dateinamen angeben oder die Datei noch
nicht existiert, beginnen Sie mit einem leeren Editorpuffer. Während
einer Sitzung erfolgen alle Änderungen am Editorpuffer. Die Orginalda-
tei wird erst verändert, wenn Sie den Inhalt des Editorpuffers in die
Datei schreiben. Dies geschieht durch explizites Sichern während der
Sitzung (mit dem ex-Kommando w) oder beim Verlassen des vi (mit den
ex-Kommandos wq, x oder dem vi-Kommando ZZ). Sie können den vi auch
verlassen, ohne die Orginaldatei zu verändern (durch das ex-Kommando
q!). Falls Sie eine neue Datei erstellen wollen, wird die Datei erst
Seite 15 Reliant UNIX 5.44 Gedruckt 11/98
vi(1) vi(1)
angelegt, wenn der Editorpuffer in die Datei geschrieben wird.
Editorpuffer sichern und vi verlassen
Um den Editorpuffer zu sichern oder den vi zu verlassen, muß sich der
vi im vi-Kommandomodus befinden.
Mit folgendem ex-Kommando (siehe Arbeitsweise des vi, Kommandos einge-
ben) sichern Sie den Inhalt Ihres Editorpuffers in die editierte oder
eine angegebene Datei:
:w[ datei]
(w - write, ex-Kommando) Der Inhalt des Editorpuffers wird in die
angegebene Datei gesichert.
datei nicht angegeben:
Der Inhalt des Editorpuffers wird in die editierte Datei
geschrieben.
Um den vi zu verlassen, haben Sie folgende Möglichkeiten:
:q (q - quit, ex-Kommando) vi verlassen. Funktioniert nur, falls
noch keine Änderungen am Editorpuffer vorgenommen wurden oder der
geänderte Editorpuffer in eine Datei gesichert wurde.
:q! (q - quit, ex-Kommando) vi verlassen. Am Editorpuffer vorgenom-
mene Änderungen gehen verloren.
:x (x - exit, ex-Kommando) vi verlassen und den geänderten Editor-
puffer in die editierte Datei schreiben.
ZZ (vi-Kommando) vi verlassen und den geänderten Editorpuffer in die
editierte Datei schreiben.
:wq[ datei]
(wq - write and quit, ex-Kommando) vi verlassen und den Editor-
puffer in die angegebene Datei datei schreiben.
datei nicht angegeben:
Der Inhalt des Editorpuffers wird in die editierte Datei
geschrieben.
Seite 16 Reliant UNIX 5.44 Gedruckt 11/98
vi(1) vi(1)
Editorpuffer des vi
Der vi verfügt über
- einen temporären Puffer
- 9 numerierte Puffer
- 26 alphabetische Puffer
Auf den Inhalt dieser Puffer können Sie im vi-Kommandomodus durch vi-
Kommandos zugreifen.
Temporärer Puffer
Der vi sichert in den temporären Puffer die letzte Änderung, die Sie
am Editorpuffer vornehmen. Wenn Sie z. B. eine Zeile gelöscht haben,
dann enthält der Puffer die gelöschte Zeile. Die vi-Kommandos U und u
(undo) benutzen diesen Puffer. Mit u können Sie Ihr letztes Kommando,
das den Editorpuffer geändert hat, rückgängig machen. u macht auch u
wieder rückgängig.
Mit den vi-Kommandos P und p (put) können Sie ebenfalls auf den tempo-
rären Puffer zugreifen, falls das letzte vi-Kommando ein Kopier- (y),
ein Lösch- (d) oder sonstiges Änderungskommando war (außer R und r).
P und p kopieren den Inhalt des temporären Puffers vor (P) bzw. hinter
(p) die aktuelle Zeile. Im Gegensatz zu U (u) ändert P (p) den tempo-
rären Puffer nicht. Dadurch können Sie, indem Sie P (p) mehrfach ver-
wenden, den gleichen Text auch mehrfach an verschiedene Stellen der
Datei einfügen.
Vorsicht:
Bei jedem Kommando, das den Editorpuffer ändert, wird der Inhalt
des temporären Puffers überschrieben. Deshalb können Sie den tem-
porären Puffer nicht verwenden, um Text von einer Datei in eine
andere zu kopieren.
Zwischen einem Kopier-, Lösch- oder Änderungskommando und dem
vi-Kommando P (p) dürfen Sie nur die vi-Kommandos zur Positionie-
rung der Schreibmarke (siehe Positionieranweisungen) verwenden,
da andere Kommandos den Inhalt des temporären Puffers verändern.
Wenn vi im Eingabemodus ist und Sie eine der Pfeil-Tasten benut-
zen, funktioniert nach Benutzung der Pfeil-Tasten das vi-Kommando
U (u) nicht.
Seite 17 Reliant UNIX 5.44 Gedruckt 11/98
vi(1) vi(1)
Numerierter Puffer
Wenn Sie eine oder mehrere Zeilen löschen (vi-Kommando d), wird der
gelöschte Text in den ersten von neun numerierten Puffer kopiert. Wenn
Sie nun nochmals Zeilen löschen, wird der Inhalt von Puffer 1 in Puf-
fer 2 kopiert, und die zuletzt gelöschten Zeilen werden wiederum in
Puffer 1 gesichert. In Puffer 1 steht also immer der zuletzt gelöschte
Text, in Puffer 2 der vorletzte ... und in Puffer 9 der neunt-letzte
gelöschte Text.
Den Inhalt der numerierten Puffer können Sie mit den vi-Kommandos P
und p zurückholen. Die numerierten werden mit Anführungszeichen " und
der Nummer des Puffers angesprochen, zum Beispiel:
"4P
Dieses vi-Kommando fügt den Inhalt des Puffers 4 vor die aktuelle
Zeile (bzw. aktuelle Position der Schreibmarke) ein.
Mit dem vi-Kommando Punkt . holen Sie den Inhalt des Puffers mit der
nächsthöheren Nummer zurück, vorausgesetzt, Sie haben mit Ihrem letz-
ten vi-Kommando Text aus einem numerierten Puffer zurückgeholt. Nach
obigem Beispiel holen Sie also den Inhalt des Puffers 5 zurück. Der
Inhalt der numerierten Puffer geht bei Dateiwechsel (mit den ex-
Kommandos n oder e) nicht verloren.
Alphabetischer Puffer
Mit einem Kopier- (y) oder Löschkommando (d) können Sie Text in einen
der 26 bezeichneten Puffer schreiben. Die Puffer bezeichnen Sie mit
den Kleinbuchstaben a-z oder mit den Großbuchstaben A-Z. Klein- und
Großbuchstaben sprechen den gleichen Puffer an, mit folgendem Unter-
schied:
Verwenden Sie Kleinbuchstaben, wird der alte Pufferinhalt durch den
neuen überschrieben, der alte wird also gelöscht. Verwenden Sie Groß-
buchstaben, wird der alte Pufferinhalt nicht überschrieben, sondern
der neue Text wird an den alten angehängt. Der vi ändert den Inhalt
eines bezeichneten Puffers während einer Editor-Sitzung solange nicht,
bis Sie den Pufferinhalt ausdrücklich überschreiben. Der vi schreibt
Text in einen bezeichneten Puffer, wenn Sie ein Anführungszeichen "
eingeben, gefolgt von dem Namen des Puffers und einem der vi-Kommandos
d oder y.
Beispiele:
"A10dd
Aktuelle und neun weitere Zeilen (10) löschen (dd) und an
den Inhalt in Puffer A anhängen.
Seite 18 Reliant UNIX 5.44 Gedruckt 11/98
vi(1) vi(1)
"by4w
Das aktuelle Wort und drei folgende (4w) in den Puffer b
kopieren (y).
"cCZeichenkette ESCAPE
Die aktuelle Zeile von der Position der Schreibmarke aus bis
zum Zeilenende mit Zeichenkette überschreiben (C) und den
überschriebenen Text in Puffer c sichern.
"Ap Den Text aus Puffer A zurückholen und hinter die aktuelle
Zeile bzw. Position einfügen (p).
Positionieranweisungen
Der vi bietet eine große Menge von Kommandos und Suchkommandos zur
Positionierung der Schreibmarke. Eine Positionieranweisung wird im
vi-Kommandomodus eingegeben.
In der folgenden Übersicht sind die wichtigsten Positionieranweisungen
zusammengestellt. Die Begriffe Absatz, Abschnitt, Satz, Wort und Lang-
wort sind im Abschnitt Kommandos, Definitionen erklärt.
Zeichenweise positionieren
[zahl]CTRL-h
um zahl Zeichen nach links
[zahl]h
um zahl Zeichen nach links
[zahl]l
um zahl Zeichen nach rechts
0 auf den Zeilenanfang
^ auf das erste Zeichen in der Zeile außer Leerzeichen und Tabula-
tor
[zahl]|
auf die erste (zahl-te) Spalte der Zeile
$ auf das letzte Zeichen in der Zeile
[zahl]fzeichen
auf zahl-tes Zeichen zeichen vorwärts
[zahl]Fzeichen
auf zahl-tes Zeichen zeichen rückwärts
[zahl]tzeichen
vor zahl-tes Zeichen zeichen vorwärts
Seite 19 Reliant UNIX 5.44 Gedruckt 11/98
vi(1) vi(1)
[zahl]Tzeichen
hinter zahl-tes Zeichen zeichen rückwärts
Wortweise positionieren
[zahl]b
auf den Anfang des zahl-ten vorhergehenden Wortes
[zahl]B
auf den Anfang des zahl-ten vorhergehenden Langwortes
[zahl]e
auf das Ende des zahl-ten Wortes
[zahl]E
auf das Ende des zahl-ten Langwortes
[zahl]w
auf den Anfang des zahl-ten Wortes
[zahl]W
auf den Anfang des zahl-ten Langwortes
Zeilenweise positionieren
[zahl]k
um zahl Zeilen in der gleiche Spalte nach oben
[zahl]j
um zahl Zeilen in der gleichen Spalte nach unten
[zahl]CTRL-J
um zahl Zeilen in der gleichen Spalte nach unten
[zahl]CR
um zahl Zeilen nach unten, auf erstes Zeichen außer Leerzeichen
und Tabulatorzeichen
[zahl]+
um zahl Zeilen nach unten, auf erstes Zeichen außer Leerzeichen
und Tabulatorzeichen
[zahl]-
um zahl Zeilen nach oben, auf erstes Zeichen außer Leerzeichen
und Tabulatorzeichen
[zeile]G
auf Zeile Nummer zeile bzw. Dateiende (zeile nicht angegeben)
[zahl]$
auf das letzte Zeichen der zahl-ten Zeile
Seite 20 Reliant UNIX 5.44 Gedruckt 11/98
vi(1) vi(1)
Satz-, absatz- und abschnittsweise positionieren
[zahl](
auf den Anfang des zahl-ten vorherigen Satzes
[zahl])
auf den Anfang des zahl-ten Satzes
[zahl]{
zurück zum Anfang des zahl-ten Absatzes
[zahl]}
auf den Anfang des zahl-ten Absatzes
[zahl][[
zurück auf die zahl-te vorangehende Abschnittsgrenze
[zahl]]]
auf die zahl-te Abschnittsgrenze
% zur korrespondierenden Klammer in C-Quellprogrammen
Bildschirmbezogen positionieren
[zahl]H
auf das erste Zeichen in der zahl-ten Textzeile auf dem Bild-
schirm
M auf die Bildschirmmitte
[zahl]L
auf das erste Zeichen in der zahlt-letzten Textzeile auf dem
Bildschirm
[zeile]z+
aktuelle Zeile oder Zeile mit Nummer zeile an den oberen Bild-
schirmrand
[zeile]z.
aktuelle Zeile oder Zeile mit Nummer zeile auf die Bildschirm-
mitte
[zeile]z-
aktuelle Zeile oder Zeile mit Nummer zeile an den unteren Bild-
schirmrand
Muster und Marken positionieren
/Muster
auf Muster vorwärts
Seite 21 Reliant UNIX 5.44 Gedruckt 11/98
vi(1) vi(1)
?Muster
auf Muster rückwärts
'marke
auf markierte Zeile (Zeilenanfang)
`marke
auf marke positionieren
KOMMANDOS
Nach dem Aufruf befindet sich der vi im vi-Kommandomodus. Falls Sie in
den vi-Eingabemodus gewechselt haben, kehren Sie durch Drü cken von
ESCAPE (bzw. DEL) wieder in den vi-Kommandomodus zurück.
ex-Kommandos können Sie, wie bereits oben beschrieben, entweder vom
vi-Kommandomodus aus oder vom ex-Kommandomodus aus eingeben. Im fol-
genden sind nur die vi-Kommandos beschrieben. Die ex-Kommandos finden
Sie beim Kommando ex.
Im vi-Kommando-Modus wird mit ESCAPE und DEL ein teilweise eingegebe-
nes Kommando gelöscht. Wenn weder der Editor sich im Eingabemodus
befindet, noch ein Kommando teilweise eingegeben wurde, so löst ESCAPE
ein akustisches Signal aus.
Vorsicht:
Im vi-Zeilen-Kommandomodus löscht ESCAPE ein gerade eingegebenes
Kommando nicht, sondern schickt es ab. Das Kommando wird also
ausgeführt! Im vi-Zeilen-Kommandomodus müssen Sie DEL verwenden,
um ein eingegebenes Kommando zu löschen.
Sofern nicht anders angegeben, gelten die Kommandos nur im vi-
Kommandomodus und haben im Eingabemodus keine spezielle Bedeutung.
Definitionen
Absatz
Ein Absatz ist festgelegt durch den Wert der ex-Option para-
graphs. Leere Zeilen und solche, an denen ein Abschnitt beginnt,
sind ebenfalls Absatzgrenzen.
Abschnitt
Ein Abschnitt ist festgelegt durch den Wert der ex-Option secti-
ons. Zeilen, die mit Formularvorschub CTRL-L oder der öffnenden
geschweiften Klammer { beginnen, zählen ebenfalls als Abschnitts-
grenze.
Ist die ex-Option lisp gesetzt, dann zählt jede öffnende runde
Klammer ( am Anfang einer Zeile ebenfalls als Abschnittsgrenze.
Seite 22 Reliant UNIX 5.44 Gedruckt 11/98
vi(1) vi(1)
Langwort
Ein Langwort ist eine Folge von Zeichen, die kein Leer-,
Tabulator- oder Neue-Zeile-Zeichen enthalten. Vergleiche Wort.
Satz Ein Satz wird beendet durch eines der folgenden Satzende-Zeichen:
Punkt .
Ausrufezeichen !
Fragezeichen ?
jeweils gefolgt von zwei Leerzeichen (um Verwechslungen mit einer
Abkürzung zu vermeiden) oder dem Neue-Zeile-Zeichen. Zwischen dem
Satzende-Zeichen und den Leerzeichen bzw. dem Neue-Zeile-Zeichen
kann eine beliebige Anzahl von schließenden runden oder eckigen
Klammern ), ], Anführungszeichen " und Gegenhochkommas ` stehen.
Wort Ein Wort ist entweder eine Folge von alphanumerischen Zeichen
oder eine Folge von Sonderzeichen. Ein Wort wird abgeschlossen
von einem Leerzeichen, Tabulatorzeichen, Neue-Zeile-Zeichen oder
dem nächsten folgenden Wort.
Vergleiche Langwort.
Beispiele:
((!!++;-. ist ein Wort
Me&You2 sind drei Worte (Me,&,You2), aber ein Lang-
wort
Zeichenkette
Eine beliebige Folge von Zeichen.
Control-Kommandos
Um ein Control-Kommando einzugeben, drücken Sie gleichzeitig die Taste
CTRL und die Taste mit dem gewünschten Kommando. Einigen der Control-
Kommandos kann eine positive ganze Zahl zahl vorangestellt werden. Die
eckigen Klammern in der Beschreibung bedeuten, daß die Angabe von zahl
optional ist. Während der Eingabe von zahl dürfen Sie die Taste CTRL
nicht drücken. Die eingegebene zahl wird nicht angezeigt, sondern
beeinflußt nur die Wirkung des nachfolgenden Kommandos. Haben Sie eine
falsche Zahl angegeben, dann können Sie die Eingabe durch ESCAPE rück-
gängig machen. Durch zahl geben Sie an:
- eine Größe bei einem Positionierkommando, z. B. rollt
5 CTRL-U
den Bildschrirm fünf Zeilen zurück.
Seite 23 Reliant UNIX 5.44 Gedruckt 11/98
vi(1) vi(1)
- einen Wiederholfaktor, z. B. blättert
4 CTRL-B
den Schirm um vier Seiten zurück.
Der Standardwert für zahl ist 1, es sei denn es ist ausdrücklich
anders angegeben.
CTRL-@
Im vi-Eingabemodus:
Wenn Sie dieses als erstes und einziges Zeichen eingeben, wird
der zuletzt eingegebene Text an der Stelle eingefügt, an der Sie
CTRL-@ eingeben. Danach wird automatisch in den Kommandomodus
zurückgewechselt.
CTRL-@ funktioniert nur bis maximal 127 Zeichen.
[zahl]CTRL-b
(b - backward) Die Bildschirmausgabe wird um 21 Bildschirm-Zeilen
zurückgeblättert. Mit zahl können Sie angeben, um wieviele Bild-
schirmseiten zurückgeblättert werden soll. Falls möglich, werden
auf die neue Bildschirmseite zwei Zeilen der vorhergehenden Bild-
schirmseite übernommen.
[zahl]CTRL-d
Im vi-Kommandomodus:
zahl nicht angegeben:
zahl = 11 bzw. der zuletzt bei CTRL-d oder CTRL-u verwendete Wert
von zahl
(d - down) Die Bildschirmausgabe wird um ein halbes Fenster vor-
wärts gerollt. Mit zahl kann angegeben werden, um wieviele Text-
zeilen die Bildschirmausgabe gerollt werden soll; sie wird wäh-
rend Ihrer vi-Sitzung für spätere Aufrufe der Kommandos CTRL-D
und CTRL-U gespeichert.
Im vi-Eingabemodus:
zahl nicht angegeben:
Im Eingabemodus wird die Schreibmarke entsprechend der ex-Option
autoindent oder CTRL-t um shiftwidth Spalten nach links bewegt
(siehe ex, ex-Optionen). CTRL-d funktioniert nur in einer Zeile,
in der noch keine Zeichen stehen.
zahl kann sein: ^ oder 0
Seite 24 Reliant UNIX 5.44 Gedruckt 11/98
vi(1) vi(1)
^CTRL-d
unterbricht das automatische Einrücken für diese Zeile.
0CTRL-d
beendet das automatische Einrücken.
[zahl]CTRL-e
Die Bildschirmausgabe wird um zahl Zeilen vorwärts gerollt. Falls
möglich, bleibt die Position der Schreibmarke dabei unverändert.
[zahl]CTRL-f
(f - forward) Die Bildschirmausgabe wird um 21 Bildschirmzeilen
in Vorwärtsrichtung geblättert. Mit zahl kann angegeben werden,
um wieviele Bildschirmseiten vorwärts geblättert werden soll.
CTRL-g
In der Statuszeile werden folgende Informationen ausgegeben:
- der Name der aktuellen Datei
- eventuell eine Zustandsangabe [Modified], falls die Datei nach
der letzten Sicherung mit dem ex-Kommando w verändert wurde
- die aktuelle Zeilennummer
- die Gesamtzahl aller Textzeilen im Editorpuffer
- der Prozent-Anteil der aktuellen Zeile an der Gesamtlänge der
Datei in Zeilen.
Entspricht dem ex-Kommando f.
[zahl]CTRL-h
(gleichbedeutend mit BACKSPACE Im vi-Kommandomodus:
Die Schreibmarke wird um zahl Zeichen nach links bewegt, höch-
stens bis zum linken Rand des Bildschirms (siehe auch vi-Kommando
h).
Im vi-Eingabemodus:
Keine Angabe für zahl möglich.
Die Schreibmarke wird um ein Zeichen nach links bewegt, höchstens
bis zum Anfang des gerade eingegebenen Textes.
[zahl]CTRL-j
(gleichbedeutend mit MENU und PFEIL-UNTEN) Die Schreibmarke wird
innerhalb der aktuellen Spalte um zahl Textzeilen nach unten
bewegt.
Entspricht CTRL-n und j.
Seite 25 Reliant UNIX 5.44 Gedruckt 11/98
vi(1) vi(1)
CTRL-l
Die aktuelle Bildschirmausgabe wird gelöscht und wieder neu auf-
gebaut. Dieses Kommando können Sie verwenden, wenn Meldungen oder
Nachrichten auf dem Bildschirm ausgegeben wurden (z. B. mit
write).
[zahl]CTRL-m
(gleichbedeutend mit CR) Die Schreibmarke wird zum ersten Zeichen
in der zahl-ten Zeile bewegt, bei dem es sich nicht um ein Leer-
oder Tabulatorzeichen handelt.
[zahl]CTRL-n
Entspricht CTRL-j und j.
[zahl]CTRL-p
Die Schreibmarke wird innerhalb der aktuellen Spalte in die
zahl-te darüberliegende Zeile bewegt.
Entspricht dem vi-Kommando k.
CTRL-r
(r - refresh) Die aktuelle Bildschirmausgabe wird gelöscht und
wieder neu aufgebaut. Zuvor gelöschte Zeilen, durch das Platzhal-
terzeichen @ gekennzeichnet, werden entfernt. Siehe CTRL-l.
CTRL-t
Im vi-Eingabemodus:
(t - Tabulator) Tabulatorzeichen einfügen. Die Schrittweite eines
Tabulators entspricht dem Wert der ex-Option shiftwidth (siehe
ex, ex-Optionen). Soll die Schreibmarke diese Leer- oder Tabula-
torzeichen nach vorne überspringen, so müssen Sie das Kommando
CTRL-d verwenden.
[zahl]CTRL-u
zahl nicht angegeben:
zahl = 11 bzw. der zuletzt bei CTRL-d oder CTRL-u verwendete Wert
der zahl
(u - up) Die Bildschirmausgabe wird um ein halbes Fenster rück-
wärts in Richtung Dateianfang gerollt. Mit zahl können Sie ange-
ben, um wieviele Textzeilen die Bildschirmausgabe gerollt werden
soll; sie wird während Ihrer vi-Sitzung für spätere Aufrufe der
Kommandos CTRL-d und CTRL-u gespeichert.
Seite 26 Reliant UNIX 5.44 Gedruckt 11/98
vi(1) vi(1)
CTRL-v
Im vi-Eingabemodus:
Ermöglicht, ein nicht druckbares Zeichen in den Text einzufügen
(z. B. Escape- oder Control-Zeichen). Die Tastenfolge CTRL-V
ESCAPE fügt das Zeichen ESC in die Datei ein.
CTRL-w
Im vi-Eingabemodus:
(w - word) Die Schreibmarke wird zum Anfang des vorherigen Wortes
bewegt. Sie können dabei den Bereich des gerade eingegebenen Tex-
tes nicht verlassen. Die nach links übersprungenen Worte sind nur
noch auf dem Bildschirm vorhanden, sollen sie im Editorpuffer
stehen, müssen sie nochmals eingegeben werden.
[zahl]CTRL-y
Die Bildschirmausgabe wird um zahl Zeilen rückwärts in Richtung
Dateianfang gerollt. Falls möglich, bleibt die Position der
Schreibmarke dabei unverändert.
CTRL-[
(gleichbedeutend mit ESCAPE) Im vi-Kommandomodus:
Ein teilweise eingegebenes Kommando wird gelöscht; wurde kein
Kommando teilweise eingegeben, so wird ein akustisches Signal
ausgegeben.
Im vi-Zeilen-Kommandomodus:
Ein gerade eingegebenes Kommando wird abgeschlossen und ausge-
führt.
Im vi-Eingabemodus:
Der vi-Eingabemodus wird beendet.
ESCAPE
Siehe CTRL-[
Kommandos des vi-Kommandomodus
Den meisten vi-Kommandos können Sie eine ganze Zahl voranstellen. Der
Standardwert für diese Zahl ist 1, es sei denn, es ist ausdrücklich
anders angegeben. Die eckigen Klammern in der Beschreibung bedeuten,
daß die Angabe optional ist. Die eingegebene Zahl wird nicht ange-
zeigt, sondern beeinflußt nur die Wirkung des nachfolgenden Kommandos.
Haben Sie eine falsche Zahl angegeben, dann können Sie die Eingabe mit
ESCAPE löschen.
Seite 27 Reliant UNIX 5.44 Gedruckt 11/98
vi(1) vi(1)
Folgende Fälle sind zu unterscheiden:
[zahl]kommando
Durch die Angabe von zahl wird das Kommando zahl-mal ausgeführt.
zahl ist eine positive ganze Zahl. zahl kann nicht 0 sein, da die
0 ein vi-Kommando darstellt.
zahl nicht angegeben:
vi nimmt für zahl den Wert 1 an.
[zeile]z
Der vi positioniert die Zeile mit der Zeilennummer zeile an den
oberen oder unteren Rand bzw. in die Mitte des Bildschirms (siehe
ausführliche Beschreibung des vi-Kommandos z).
zeile nicht angegeben:
vi positioniert die aktuelle Zeile an den oberen oder unteren
Rand bzw. in die Mitte des Bildschirms.
[spalte]|
Angabe der Spalte, auf die Sie die Schreibmarke positionieren.
Auf die folgenden vi-Kommandos kann ein Positionierkommando position
folgen, um einen Bereich anzugeben, der von dem Kommando bearbeitet
wird: c, d, y, Kleinerzeichen <, Größerzeichen >, Ausrufezeichen ! und
Gleichheitszeichen =.
Bei den Kommandos <, >, ! und =, die nur ganze Zeilen bearbeiten, wer-
den alle Zeilen bearbeitet, die sich ganz oder teilweise im angegebe-
nen Bereich befinden.
Bei den Kommandos c, d und y erstreckt sich der zu bearbeitende
Bereich von der aktuellen Position der Schreibmarke (einschließlich)
bis zur Position, die die Schreibmarke nach dem Positionierkommando
hat. Dabei ist entscheidend, ob z. B. wortweise oder zeilenweise posi-
tioniert wurde. Falls zeilenweise positioniert wurde, werden alle Zei-
len (einschließlich der aktuellen) als ganze Zeilen bearbeitet. Falls
wortweise positioniert wurde, wird der Bereich bis vor das Wort (auf
Wortanfang positioniert) bzw. bis hinter das Wort (auf Wortende posi-
tioniert) bearbeitet.
[zahl]a
(a - append) vi-Eingabemodus einschalten. Der eingegebene Text
wird hinter der aktuellen Position der Schreibmarke eingefügt.
Mit zahl können Sie angeben, wieviele Kopien des Textes eingefügt
werden sollen; der eingefügte Text darf dann aber nicht länger
als eine Textzeile sein.
Seite 28 Reliant UNIX 5.44 Gedruckt 11/98
vi(1) vi(1)
[zahl]A
(A - append) vi-Eingabemodus einschalten. Der eingegebene Text
wird hinter dem Ende der aktuellen Textzeile eingefügt. Durch
zahl kann angegeben werden, wieviele Kopien des Textes eingefügt
werden sollen; der eingefügte Text darf dann aber nicht länger
als eine Textzeile sein. Entspricht $a.
[zahl]b
(b - back) Die Schreibmarke wird auf den Anfang des zahl-ten vor-
hergehenden Wortes in der aktuellen Zeile bewegt.
[zahl]B
(B - back) Die Schreibmarke wird zum Anfang des zahl-ten vorher-
gehenden Langwortes bewegt.
[zahl]cposition
(c - change) Textbereich überschreiben.
Auf dieses Kommando muß eine Positionieranweisung folgen.
- Wenn sich die angegebene Position noch in der gleichen Text-
zeile befindet, wird sie durch das Dollar-Zeichen $ markiert,
und für den Bereich zwischen der Schreibmarke und $ wird der
vi-Eingabemodus eingeschaltet. Der Text in diesem Bereich wird
durch den Text ersetzt, der nun eingegeben wird.
- Wenn sich die angegebene Position in einer neuen Textzeile
befindet, hängt das Verhalten von c davon ab, ob Sie zeilen-
weise oder nicht zeilenweise positioniert haben. Haben Sie
zeilenweise positioniert, dann werden alle ganz oder teilweise
betroffenen Zeilen gelöscht. Haben Sie nicht zeilenweise,
z. B. wortweise, positioniert, dann wird nur der betreffende
Bereich gelöscht. In jedem Fall wird der vi in den Eingabemo-
dus geschaltet. Der gelöschte Text wird durch den Text
ersetzt, der nun eingegeben wird. Der gelöschte Text wird vom
vi in den temporären Puffer gesichert, d. h. er kann z. B. mit
P oder "1P wiederhergestellt werden.
zahl
Zahl wirkt als Multiplikator auf den angegebenen Bereich.
[zahl]cc
Das Kommando zahlcc bewirkt, daß die aktuelle Zeile bzw. zahl
Zeilen vollständig überschrieben werden, unabhänging von der
Position der Schreibmarke in der aktuellen Zeile.
[zahl]C
(C - change) Der Rest der aktuellen Zeile wird überschrieben.
Entspricht zahlc$.
Seite 29 Reliant UNIX 5.44 Gedruckt 11/98
vi(1) vi(1)
[zahl]dposition
[zahl]dd
(d - delete) Textbereich löschen.
Auf dieses Kommando muß eine Positionierungsanweisung folgen. d
löscht den Bereich von der aktuellen Position der Schreibmarke
bis zum Ende des angegebenen Bereiches. Wenn mehr als ein Teil
einer einzigen Zeile gelöscht wird, wird der gelöschte Text in
den numerierten Puffern 1 - 9 gespeichert, d. h. er kann mit p
wiederhergestellt werden.
zahl Zahl wirkt als Multiplikator auf den angegebenen Bereich.
d Das Kommando zahldd löscht die aktuelle bzw. zahl Zeilen.
"Puffer[zahl]dposition
"Puffer[zahl]dd
Text löschen und in alphabetischen Puffer sichern.
Der Text wird von der aktuellen Position der Schreibmarke bis zum
Ende des angegebenen Bereichs gelöscht, zusätzlich aber in den
mit Puffer bezeichneten alphabetischen Puffer gesichert. Puffer
ist ein Groß- oder ein Kleinbuchstabe.
D (D - delete) Der Rest der aktuellen Zeile wird gelöscht. Ent-
spricht d$.
[zahl]e
(e - end) Die Schreibmarke wird auf das Ende des zahl-ten Wortes
positioniert.
[zahl]E
(E - end) Die Schreibmarke wird auf das Ende des zahlten Langwor-
tes positioniert.
[zahl]fzeichen
(f - find) Auf f muß ein einzelnes Zeichen folgen. vi durchsucht
die aktuelle Zeile in Vorwärtsrichtung (nach rechts) nach diesem
Zeichen und positioniert die Schreibmarke gegebenenfalls auf das
gefundene Zeichen. Wenn ein Wiederholungsfaktor angegeben wird,
positioniert vi auf das zahl-te Zeichen.
Sie wiederholen dieses Suchkommando mit dem Strichpunkt ; in
Suchrichtung und mit dem Komma , entgegen der Suchrichtung.
[zahl]Fzeichen
(F - find) Auf F muß ein einzelnes Zeichen folgen. vi durchsucht
die aktuelle Zeile in Rückwärtsrichtung (nach links) nach diesem
Zeichen und positioniert die Schreibmarke gegebenenfalls auf das
gefundene Zeichen. Wenn ein Wiederholungsfaktor angegeben wird,
positioniert vi auf das zahl-te Zeichen.
Seite 30 Reliant UNIX 5.44 Gedruckt 11/98
vi(1) vi(1)
Sie wiederholen dieses Suchkommando mit dem Strichpunkt ; in
Suchrichtung und mit dem Komma , entgegen der Suchrichtung.
[zeile]G
(G - go to) vi positioniert die Schreibmarke auf den Anfang der
Zeile mit der Nummer zeile.
zeile nicht angegeben:
vi positioniert die Schreibmarke auf die letzte Zeile der Datei.
[zahl]h
(h - home) Die Schreibmarke wird um zahl Zeichen nach links
bewegt, jedoch nur in der aktuellen Zeile
[zahl]H
(h - home) Die Schreibmarke wird auf den Anfang der ersten Bild-
schirmzeile positioniert. Wird zahl angegeben, so wird die
Schreibmarke zu der Zeile bewegt, die um zahl Zeilen vom oberen
Rand des Bildschirms entfernt ist. Die Schreibmarke wird in bei-
den Fällen zum ersten Zeichen in der Zeile bewegt, bei dem es
sich nicht um ein Leer- oder Tabulatorzeichen handelt.
[zahl]i
(i - insert) vi-Eingabemodus einschalten. Der eingegebene Text
wird vor der aktuellen Position der Schreibmarke eingefügt. Mit
zahl können Sie angeben, wieviele Kopien des Textes eingefügt
werden sollen. Der eingefügte Text darf dann aber nicht länger
als eine Textzeile sein.
[zahl]I
(I - insert) vi-Eingabemodus einschalten. Der eingegebene Text
wird vor dem ersten Zeichen in der aktuellen Zeile eingefügt. Mit
zahl können Sie angeben, wieviele Kopien des Textes eingefügt
werden sollen. Der eingefügte Text darf dann aber nicht länger
als eine Textzeile sein.
[zahl]j
Die Schreibmarke wird um zahl Textzeilen in der gleichen Spalte
nach unten bewegt.
Entspricht CTRL-j und CTRL-n.
[zahl]J
(J - join) Die nachfolgende Zeile wird an die aktuelle Zeile
angehängt, wobei an der Nahtstelle die geeignete Anzahl von Leer-
oder Tabulatorzeichen eingefügt wird: ein Leerzeichen zwischen
Wörtern, zwei Leerzeichen nach einem Punkt, kein Leerzeichen,
wenn das erste Zeichen in der nächsten Zeile eine schließende
runde Klammer ) ist. Über zahl kann die Anzahl der zusammenzufü-
genden Zeilen angegeben werden.
Seite 31 Reliant UNIX 5.44 Gedruckt 11/98
vi(1) vi(1)
[zahl]k
Die Schreibmarke wird um zahl Textzeilen in der gleichen Spalte
nach oben bewegt.
Entspricht CTRL-P.
[zahl]l
Die Schreibmarke wird um zahl Zeichen nach rechts bewegt, jedoch
nur in der aktuellen Zeile.
Entspricht <space>.
[zahl]L
(L - last) Die Schreibmarke wird zum ersten Zeichen in der letz-
ten Textzeile auf dem Bildschirm bewegt, bei dem es sich nicht um
ein Leer- oder Tabulatorzeichen handelt. Wird zahl angegeben, so
wird die Schreibmarke zu der Textzeile bewegt, die sich zahl
Textzeilen oberhalb des unteren Bildschirmrandes befindet.
Beispiel:
d3L
löscht alle Zeilen von der aktuellen Zeile (einschließlich)
bis zur dritten Textzeile (einschließlich) oberhalb des
unteren Bildschirmrandes.
mmarke
(m - mark) An der aktuellen Position der Schreibmarke wird eine
Marke gesetzt. Auf m muß ein Kleinbuchstabe marke folgen; mit
diesem Buchstaben wird die aktuelle Position der Schreibmarke
markiert.
Adressieren
`marke Mit Gegenhochkomma ` wird die Schreibmarke auf marke
bewegt.
'marke Mit Hochkomma ' wird die Schreibmarke auf das erste Zei-
chen in der Zeile mit marke bewegt.
M (M - middle) Die Schreibmarke wird zum ersten Zeichen in der
mittleren Bildschirmzeile bewegt, bei dem es sich nicht um ein
Leer- oder Tabulatorzeichen handelt.
n Wiederholt das letzte /- bzw. ?-Suchkommando.
N Wiederholt das letzte /- bzw. ?-Suchkommando in entgegengesetzter
Suchrichtung.
Seite 32 Reliant UNIX 5.44 Gedruckt 11/98
vi(1) vi(1)
o (o - open) vi-Eingabemodus einschalten. Unter der aktuellen Zeile
wird eine Zeile eingefügt.
O (O - open) vi-Eingabemodus einschalten. Oberhalb der aktuellen
Zeile wird eine neue Zeile eingefügt.
p (p - put) Text aus temporärem Puffer holen. Schreibt den Text aus
dem temporären Puffer hinter die aktuelle Position der Schreib-
marke. Wenn der Text im Puffer mit den vi-Kommandos, die Zeilen
bearbeiten (z. B. dd, Y), gesichert wurde, dann wird der Text als
Zeile zwischen der aktuellen Textzeile und der nächsten Textzeile
eingefügt.
"pufferp
(p - put) Text aus numeriertem oder alphabetischem Puffer holen.
puffer kann sein:
- eine Ziffer von 1-9: der Text wird aus dem entsprechenden
numerierten Puffer geholt
- ein Buchstabe: der Text wird aus dem entsprechenden alphabeti-
schen Puffer geholt.
P
"pufferP
(P - put) Ähnlich p; der Text wird jedoch vor die aktuelle Posi-
tion der Schreibmarke bzw. die aktuelle Zeile eingefügt.
Q (Q - quit) vi wird beendet, und der ex-Kommandomodus wird einge-
schaltet. Um in den vi-Kommandomodus zurückzukehren müssen Sie vi
CR eingeben.
[zahl]rzeichen
(r - replace) Das Zeichen, auf dem die Schreibmarke steht, wird
durch das nächste eingegebene Zeichen zeichen ersetzt. Wird eine
Zahl angegeben, so werden zahl Zeichen jeweils durch das nächste
Zeichen ersetzt.
R (R - replace) Mehrere Zeichen ersetzen. vi schaltet auf der aktu-
ellen Position der Schreibmarke in den vi-Eingabemodus Die einge-
gebenen Zeichen werden jedoch nicht eingefügt, sondern über-
schreiben jeweils das Zeichen unter der Schreibmarke. Mit ESCAPE
kann dieser Modus beendet werden.
[zahl]s
(s - substitute) Das Zeichen unter der Schreibmarke wird
gelöscht, und vi wird in den vi-Eingabemodus umgeschaltet. Das
gelöschte Zeichen wird dann durch den eingegebenen Text ersetzt.
Über eine Zahl kann angegeben werden, wieviele Zeichen in der
aktuellen Zeile gelöscht werden sollen. Das letzte zu löschende
Zeichen wird wie bei c durch ein Dollar-Zeichen $ markiert.
Seite 33 Reliant UNIX 5.44 Gedruckt 11/98
vi(1) vi(1)
Beispiel:
5sbla bla bla ESCAPE
ersetzt das Zeichen unter der Schreibmarke und die vier
rechts folgenden Zeichen durch die Zeichenkette bla bla bla.
Das Gleiche erreichen Sie mit:
c5lbla bla bla ESCAPE
[zahl]S
(S - substitute) vi-Eingabemodus einschalten. Ganze Zeilen werden
ersetzt (entspricht cc). Mit zahl kann angegeben werden, wieviele
Zeilen ersetzt werden sollen.
[zahl]tzeichen
(t - to) Auf t muß ein einzelnes Zeichen folgen. vi durchsucht
die aktuelle Zeile in Vorwärtsrichtung (nach rechts) nach diesem
Zeichen. Wenn das Zeichen gefunden wurde, positioniert der vi die
Schreibmarke unmittelbar vor dieses Zeichen. Wenn Sie einen Wie-
derholungsfaktor angeben, positioniert vi vor das zahl-te Zei-
chen. Eine Wiederholung des Suchkommandos mit , bzw. ; ist nicht
sinnvoll.
[zahl]Tzeichen
(T - to) Auf T muß ein einzelnes Zeichen folgen. vi durchsucht
die aktuelle Zeile in Rückwärtsrichtung (nach links) nach diesem
Zeichen. Wenn das Zeichen gefunden wurde, positioniert der vi die
Schreibmarke unmittelbar hinter dieses Zeichen. Wenn Sie einen
Wiederholungsfaktor angeben, positioniert vi hinter das zahl-te
Zeichen. Eine Wiederholung des Suchkommandos mit , bzw. ; ist
nicht sinnvoll.
u (u - undo) Das letzte Kommando, durch das der temporäre Puffer
geändert wurde, wird rückgängig gemacht. Durch ein erneutes u-
Kommando kann auch das letzte u-Kommando rückgängig gemacht wer-
den, usw.
Beispiel:
d3w löscht drei Worte ab aktueller Position der Schreib-
marke
u holt die drei Worte wieder zurück
u löscht die drei Worte wieder
Mit p und P können Sie auf den Inhalt des temporären Puffers
zugreifen.
Seite 34 Reliant UNIX 5.44 Gedruckt 11/98
vi(1) vi(1)
Folgt ein u-Kommando auf ein insert-Kommando, mit dem mindestens
eine neue Textzeile eingefügt wurde, so wird der mit u gelöschte
Text im numerierten Puffer 1 gesichert.
U (U - undo) Die letzten Änderungen an der aktuellen Zeile werden
rückgängig gemacht. U funktioniert nur, solange Sie die Zeile
nicht verlassen haben.
[zahl]w
(w - word) Die Schreibmarke wird auf den Anfang des zahl-ten Wor-
tes bewegt.
[zahl]W
(W - word) Die Schreibmarke wird auf den Anfang des zahl-ten
Langwortes bewegt.
[zahl]x
Das Zeichen an der aktuellen Schreibmarkenposition wird gelöscht.
Wird zahl angegeben, so werden, beginnend bei der aktuellen Posi-
tion der Schreibmarke, zahl Zeichen in der aktuellen Zeile
gelöscht.
[zahl]X
Das Zeichen vor der Schreibmarke wird gelöscht. Wird zahl angege-
ben, so werden in der aktuellen Zeile zahl Zeichen vor der
Schreibmarke gelöscht.
[zahl]yposition
[zahl]yy
Text in temporären Puffer sichern
(y - yank) Auf dieses Kommando muß eine Positionieranweisung fol-
gen. Der Text von der aktuellen Position der Schreibmarke bis zum
Ende der angegebenen Position wird in den temporären Puffer
kopiert.
zahl zahl wirkt als Multiplikator auf den angegebenen Bereich.
y Das Kommando yy bewirkt, daß die aktuelle Zeile vollständig
in den Puffer gesichert wird.
Beispiele:
yw kopiert von der Position der Schreibmarke bis zum
Wortende in den temporären Puffer
4y3w 12 Worte in den temporären Puffer sichern
4yy die aktuelle und drei folgende Textzeilen in den
temporären Puffer sichern
Seite 35 Reliant UNIX 5.44 Gedruckt 11/98
vi(1) vi(1)
"puffer[zahl]yposition
"puffer[zahl]yy
Text in alphabetischen Puffer sichern
(y - yank) Ist dem Kommando der Name eines alphabetischen Puffers
("puffer) vorangestellt, so wird der Text zusätzlich in diesen
Puffer gesichert. puffer ist ein Großbuchstabe oder ein Klein-
buchstabe.
Beispiele:
"a4yy die aktuelle und drei folgende Textzeilen in den
alphabetischen Puffer a sichern.
"ap Inhalt von a im Anschluß an aktuelle Position ausge-
ben
[zahl]Y
Zeile(n) in temporären Puffer sichern
(Y - yank) Eine Kopie der aktuellen Zeile bzw. von zahl Zeilen
wird in den temporären Puffer gesichert (entspricht yy).
"puffer[zahl]Y
Zeile(n) in alphabetischen Puffer sichern
(Y - yank) Eine Kopie der aktuellen Zeile bzw. von zahl Zeilen
wird in den mit puffer bezeichneten alphabetischen Puffer gesi-
chert. puffer ist ein Großbuchstabe oder ein Kleinbuchstabe. Ent-
spricht "pufferyy.
[zeile]z[zahl]zeichen
/Muster/z[zahl]zeichen
Die durch zeile bzw. Muster bestimmte Textzeile wird auf die
durch zeichen bestimmte Stelle des Bildschirms positioniert.
zeichen muß auf z folgen. zeichen kann sein:
CR oder Plus-Zeichen +
Positionierung auf den oberen Rand des Bildschirms
Punkt .
Positionierung auf die Mitte des Bildschirms
Minuszeichen -
Positionierung auf den unteren Rand des Bildschirms
zeile ist die Zeilennummer der Textzeile, die positioniert wird.
zeile nicht angegeben:
Die aktuelle Zeile wird positioniert.
Seite 36 Reliant UNIX 5.44 Gedruckt 11/98
vi(1) vi(1)
Muster bezeichnet die Zeile, in der Muster zum ersten Mal vor-
kommt.
zahl ist eine ganze Zahl zwischen 1 und 23, die auf z folgt. zahl
gibt die Anzahl der Bildschirmzeilen an, die dargestellt werden
sollen.
zahl nicht angegeben:
zahl = 23.
ZZ vi beenden. Wenn am Editorpuffer seit der letzten Sicherung (mit
dem ex-Kommando w) Änderungen vorgenommen wurden, dann wird der
Inhalt des Editorpuffers in die Datei mit dem aktuellen Dateina-
men (siehe ex-Kommando f) gesichert. Entspricht ex-Kommando x.
[zahl]<space>
Die Schreibmarke wird um zahl Zeichen nach rechts bewegt (höch-
stens bis zum Zeilenende).
Entspricht l.
[zahl]!position
Mit Ausrufezeichen ! und einer Positionieranweisung können Sie in
den vi-Zeilen-Kommandomodus wechseln, um ein Reliant UNIX Kom-
mando einzugeben. Der Bereich von der aktuellen Zeile bis zur
angegebenen Zeile wird zur Standard-Eingabe des Reliant UNIX Kom-
mandos und durch die Ausgabe (Standard-Ausgabe und Standard-Feh-
lerausgabe) des Reliant UNIX Kommandos ersetzt. Die Zeilen werden
immer ganz übergeben, nie als Teilzeilen.
Die Schreibmarke springt erst nach der Eingabe der Positionieran-
weisung in die Statuszeile. Die Eingabe des Reliant UNIX Komman-
dos muß mit CR abgeschlossen werden.
position
Positionieranweisung auf eine Zeile. Positionieranweisungen
auf Zeilen sind z. B.:
3j 3 Zeilen nach unten
zeileG auf Zeile mit Zeilennummer zeile positionieren
L auf letzte Bildschirmzeile positionieren
position kann auch ein zweites Ausrufezeichen ! sein. Dann
wird die aktuelle Zeile als Standard-Eingabe dem Reliant
UNIX Kommando übergeben. Dem zweiten Ausrufezeichen kann
eine ganze Zahl vorangestellt werden; damit wird angegeben,
wieviele Zeilen einschließlich der aktuellen Zeile an das
Reliant UNIX Kommando übergeben werden.
Seite 37 Reliant UNIX 5.44 Gedruckt 11/98
vi(1) vi(1)
zahl ist ein Wiederholungsfaktor.
Beispiele:
!!wc CR
übergibt die aktuelle Zeile als Eingabe an wc und
ersetzt sie durch die Ausgabe von wc.
!1Gsort CR
sortiert den Bereich von der aktuellen Zeile bis Datei-
anfang.
3!$tr a b CR
ersetzt alle a durch b in der ganzen aktuellen Zeile
sowie in den beiden folgenden Zeilen.
[zahl]$
Mit Dollar-Zeichen $ wird die Schreibmarke zum Ende der aktuellen
Zeile bewegt. zahl ist ein Wiederholungsfaktor (mit 2$ z. B. wird
die Schreibmarke zum Ende der nächsten Zeile bewegt).
" Das Anführungszeichen " wird dem Namen eines alphabetischen oder
numerierten Puffers vorangestellt. Siehe vi-Kommandos d, p und y.
% Mit Prozent-Zeichen % wird die Schreibmarke zur korrespondieren-
den Klammer bewegt. Korrespondierende Klammern sind öffnende und
schließende runde Klammern ( und ), eckige Klammern [ und ] sowie
geschweifte Klammern { und }.
& Mit dem kommerziellen Und & wird das letzte ex-Kommando s wiede-
rholt. Entspricht dem ex-Kommando &.
'marke
(Hochkomma) Schreibmarke auf markierte Zeile bewegen
Mit Hochkomma Marke 'marke wird die Schreibmarke zum ersten Zei-
chen der markierten Zeile bewegt, das kein Leer- oder Tabulator-
zeichen ist. marke ist ein Kleinbuchstabe, der eine Marke
bezeichnet, die mit dem vi-Kommando m gesetzt wurde.
Wird das Hochkomma-Kommando bei einem anderen Kommando als Posi-
tionierkommando verwendet, werden alle Zeilen im angegebenen
Bereich als ganze Zeilen behandelt - einschließlich der aktuellen
und der markierten Zeile.
Beispiel:
d'a Die Zeilen von der aktuellen Zeile bis zur markierten
Zeile einschließlich werden gelöscht.
'' (doppeltes Hochkomma) Schreibmarke auf vorherige aktuelle Zeile
bewegen
Seite 38 Reliant UNIX 5.44 Gedruckt 11/98
vi(1) vi(1)
Durch das Kommando zweifaches Hochkomma '' wird die Schreibmarke
auf den Anfang der Zeile bewegt, in der sie sich vor der letzten
Ausführung eines der folgenden vi-Kommandos befunden hat:
H, L, M, n, N, %, ', (, ), [[, ]], `, {, }, /Muster CR,
?Muster CR.
Wird das Doppelte-Hochkomma-Kommando bei einem anderen Kommando
als Positionierkommando verwendet, so werden alle Zeilen im ange-
gebenen Bereich als ganze Zeilen behandelt - einschließlich der
aktuellen und der markierten Zeile.
Beispiel:
d'' Der Bereich von der aktuellen bis zur vorherigen aktu-
ellen Zeile wird gelöscht. Vergewissern Sie sich vorher
mit '', wo die vorherige aktuelle Zeile war. Wenn keine
vorherige aktuelle Zeile existiert, löscht vi von der
aktuellen Zeile bis Datei-Anfang. Mit u können Sie den
gelöschten Text zurück holen.
[zahl](
Mit der öffnenden runden Klammer ( wird die Schreibmarke zurück
zum Anfang des zahl-ten vorhergehenden Satzes bewegt.
Ist die ex-Option lisp gesetzt, so wird die Schreibmarke an den
Anfang eines lisp s-Ausdruckes bewegt (siehe ex, ex-Optionen).
Auch der Beginn eines Abschnittes oder Absatzes wird als Beginn
eines Satzes interpretiert (siehe { und [[).
[zahl])
Mit der schließenden runden Klammer ) wird die Schreibmarke zum
Anfang des zahl-ten Satzes bewegt.
[zahl]+
Mit dem Pluszeichen + wird die Schreibmarke zum ersten Zeichen in
der nächsten Zeile bewegt, bei dem es sich nicht um ein Leer-
oder Tabulatorzeichen handelt. Mit zahl kann angegeben werden, um
wieviele Zeilen die Schreibmarke in Vorwärtsrichtung bewegt wer-
den soll (wie bei CTRL-m).
[zahl],
Komma , bewirkt die Umkehrung des letzten vi-Kommandos (Suche
nach einem einzelnen Zeichen):
f, F, t oder T.
Die Zeile wird in der entgegengesetzten Richtung durchsucht.
Durch zahl kann der Wiederholungsfaktor angegeben werden.
Seite 39 Reliant UNIX 5.44 Gedruckt 11/98
vi(1) vi(1)
[zahl]-
Mit Minuszeichen - wird die Schreibmarke zum ersten Zeichen in
der zahl-ten vorhergehenden Zeile bewegt, bei dem es sich nicht
um ein Leer- oder Tabulatorzeichen handelt.
[zahl].
Mit Punkt wird das letzte vi-Kommando, das den Editorpuffer ver-
ändert hat, zahl-mal wiederholt.
Wenn Ihr letztes Kommando den Inhalt eines numerierten Puffers
ausgegeben hat, dann gibt ein darauf folgendes Punkt-Kommando den
Inhalt des numerierten Puffers mit der um eins erhöhten Nummer
aus usw.
/Muster CR
Mit Schrägstrich / wechseln Sie sofort in den vi-Zeilen-
Kommandomodus, in dem Sie einen regulären Ausdruck Muster angeben
können. Die Eingabe von Muster beenden Sie mit CR. vi positio-
niert dann die Schreibmarke vorwärts auf die erste gefundene Zei-
chenkette, die zu Muster paßt. Wenn keine passende Zeichenkette
gefunden wird, bleibt die Schreibmarke auf der aktuellen Posi-
tion. Die Suche kann mit SIGINT beendet werden.
Standardmäßig ist die ex-Option wrapscan (abgekürzt ws) gesetzt,
deshalb erfolgt die Suche über Dateiende hinaus und wird am
Dateianfang fortgesetzt bis die aktuelle Position der Schreib-
marke wieder erreicht ist. Mit dem ex-Kommando set nows endet die
Suche am Dateiende (siehe ex, ex-Optionen und ex-Kommando set).
Mit dem vi-Kommando n wiederholen Sie die Suche in Suchrichtung,
mit N in Gegenrichtung.
Wird das Schrägstrich-Kommando bei einem anderen Kommando als
Positionierkommando verwendet, so wird der Bereich von der Posi-
tion der Schreibmarke (einschließlich) bis zur angegebenen Posi-
tion (ausschließlich) bearbeitet.
Beispiel:
In einer Zeile steht folgender Text:
Ein Taucher, der nicht taucht, taugt nix.
Die Schreibmarke steht auf dem Komma hinter Taucher. Geben
sie nun ein:
d/ taugt CR
Es bleibt:
Ein Taucher taugt nix.
Seite 40 Reliant UNIX 5.44 Gedruckt 11/98
vi(1) vi(1)
? Das Fragezeichen bewirkt eine Suche in Rückwärtsrichtung; ist
also das Gegenstück zu / (siehe /).
0 Mit Null 0 wird die Schreibmarke zum ersten Zeichen in der aktu-
ellen Zeile bewegt. Wenn der Null eine andere Ziffer vorange-
stellt wird, wird die Null nicht als vi-Kommando interpretiert.
: Das vi-Kommando Doppelpunkt : wechselt in den vi-Zeilen-
Kommandomodus. Hier können Sie nun ein ex-Kommando angeben. Das
ex-Kommando wird mit CR abgeschickt.
Falls Sie ein ex-Kommando eingeben wollen, das länger als eine
Eingabezeile ist, müssen Sie mit Q in den ex-Kommandomodus wech-
seln.
[zahl];
Strichpunkt ; bewirkt die Wiederholung des letzten vi-Kommandos
(Suche nach einem einzelnen Zeichen):
f, F, t, T.
Durch zahl kann der Wiederholungsfaktor angegeben werden.
[zahl]<position
Auf Kleinerzeichen < muß ein Positionierkommando auf eine andere
Zeile folgen. Die Zeilen von der aktuellen Zeile bis einschließ-
lich der angegebenen Zeile werden um shiftwidth Positionen nach
links verschoben (siehe ex, ex-Optionen). zahl wirkt als Multi-
plikator.
position kann auch ein zweites Kleinerzeichen sein. << bewirkt,
daß die aktuelle Zeile verschoben wird (oder zahl Zeilen, ein-
schließlich der aktuellen Zeile).
[zahl]=position
Auf das Gleichheitszeichen = muß ein Positionierkommando auf eine
andere Zeile folgen. Ist die ex-Option lisp gesetzt, so werden
die Zeilen im angegebenen Bereich so eingerückt, als wäre bei
ihrer Eingabe auch die Option autoindent gesetzt. Mit zahl kann
angegeben werden, wieviele Zeilen bearbeitet werden sollen. posi-
tion kann auch ein zweites Gleichheitszeichen sein. == bewirkt,
daß die aktuelle Zeile eingerückt wird (oder zahl Zeilen, ein-
schließlich der aktuellen).
[zahl]>position
Das vi-Kommando Größerzeichen > verschiebt Zeilen um shiftwidth
Positionen nach rechts (siehe <).
? Das Fragezeichen bewirkt eine Suche in Rückwärtsrichtung; ist
also das Gegenstück zu / (siehe /).
`marke
Seite 41 Reliant UNIX 5.44 Gedruckt 11/98
vi(1) vi(1)
(Gegenhochkomma) Schreibmarke auf gesetzte Marke bewegen
marke ist ein Kleinbuchstabe, der eine Marke bezeichnet, die mit
dem vi-Kommando m gesetzt wurde. Mit Gegenhochkomma Marke `marke
wird die Schreibmarke auf das markierte Zeichen positioniert.
Wird das `-Kommando bei einem anderen Kommando als Positionier-
kommando verwendet, wird der Bereich zwischen der aktuellen Posi-
tion der Schreibmarke (einschließlich) und der vorherigen aktuel-
len Position (ausschließlich) bearbeitet.
`` (doppelte Gegenhochkommas) Schreibmarke auf vorherige aktuelle
Position bewegen
Durch das Kommando doppeltes Gegenhochkomma `` wird die Schreib-
marke auf die Position bewegt, auf der sie sich vor der letzten
Ausführung eines der folgenden vi-Kommandos befunden hat:
H, L, M, n, N, %, ", (, ), [[, ]], ``, {, }, /Muster CR,
?Muster CR.
Wird das ``-Kommando bei einem anderen Kommando als Positionier-
kommando verwendet, wird der Bereich zwischen der aktuellen
Postion der Schreibmarke (einschließlich) und der vorherigen
aktuellen Position (ausschließlich) bearbeitet.
[zahl][[
Mit 2 öffnenden eckigen Klammern wird zurück auf die zahl-te
Abschnittsgrenze positioniert.
[zahl]]]
Mit 2 schließenden eckigen Klammern wird vorwärts auf die zahl-te
Abschnittsgrenze positioniert.
^ Mit Dach ^ wird die Schreibmarke auf das erste Zeichen in der
aktuellen Zeile bewegt, bei dem es sich nicht um ein Leer- oder
Tabulatorzeichen handelt.
[zahl]{
Mit der öffnenden geschweiften Klammer { wird die Schreibmarke
zum Anfang des aktuellen Absatzes bewegt. Durch die Angabe von
zahl kann die Schreibmarke auf den Anfang des zahl-ten Absatzes
gesetzt werden.
[zahl]}
Mit der schließenden geschweiften Klammer } wird die Schreibmarke
zum Anfang des nächsten Absatzes bewegt. Durch zahl kann ein Wie-
derholungsfaktor angegeben werden.
Seite 42 Reliant UNIX 5.44 Gedruckt 11/98
vi(1) vi(1)
[spalte]|
Mit dem senkrechten Strich | wird die Schreibmarke auf die mit
spalte angegebene Spalte positioniert.
spalte nicht angegeben: spalte = 1
~ Die Tilde ~ bewirkt eine Zeichenkonvertierung. Steht an der aktu-
ellen Schreibmarke ein Kleinbuchstabe, so wird er in einen Groß-
buchstaben umgewandelt. Steht an der aktuellen Schreibmarkenposi-
tion ein Großbuchstabe, so wird er in einen Kleinbuchstaben umge-
wandelt. Die Schreibmarke bewegt sich anschließend um ein Zeichen
nach rechts weiter.
ANPASSUNG AN DIE DATENSICHTSTATION
Die Bildschirmausgabe des vi hängt vom Typ der verwendeten Datensicht-
station ab. In Reliant UNIX brauchen Sie den vi nicht anzupassen.
vi benutzt den Inhalt der Umgebungsvariablen TERM, um in einer Daten-
bank (/usr/lib/terminfo/*/*) die notwendigen Informationen über die
verwendete Datensichtstation zu finden. Falls TERM nicht definiert ist
oder Sie an einer Datensichtstation eines anderen Typs arbeiten, müs-
sen Sie TERM neu setzen. Dazu gibt es verschiedene Möglichkeiten:
- Shell-Variable TERM setzen und exportieren
- TERM in der Datei .profile definieren und exportieren
- ex-Kommando set term ausführen (nur im ex-Kommandomodus möglich)
- ex-Kommando set term in die Datei .exrc eintragen
- Umgebungsvariable EXINIT in der Datei .profile definieren und
exportieren
- Den Systemverwalter konsultieren
Vorsicht:
Geben Sie nur den tatsächlichen Namen Ihrer Datensichtstation für
TERM an. Falls andere Namen verwendet werden, kann dies zur Störung
Ihrer Datensichtstation führen.
Seite 43 Reliant UNIX 5.44 Gedruckt 11/98
vi(1) vi(1)
Voreinstellung des vi
Voreinstellungen werden mit ex-Optionen gesetzt; beim Kommando ex,
Abschnitt ex-Optionen, ist beschrieben, welche Voreinstellungen mög-
lich sind.
Das ex-Kommando set all listet alle aktuell geltenden Voreinstellungen
auf, zum Beispiel:
directory=/tmp Dateiverzeichnis für Editorpuffer
nonumber Zeilennummern werden nicht ausgegeben
report=5 Meldung bei mehr als 5 veränderten Zeilen
scroll=11 Bildschirm wird um 11 Zeilen bei CTRL-D verschoben
noshowmode Keine Anzeige des vi-Modus
term=97801 Terminaltyp
window=23 Bildschirmzeilen für das Textfenster
wrapmargin=0 Kein automatischer Zeilenumbruch
Es gibt zwei Typen von Optionen: Optionen mit Booleschen Werten und
Optionen mit nicht-Boole'schen Werten. Ein Beispiel für den
Boole'schen Typ ist die Option showmode. Ist sie gesetzt, gibt set all
die Zeichenkette showmode aus, ist sie nicht gesetzt, gibt set all die
Zeichenkette noshowmode aus. Bei nicht-Booleschen Typen gibt set all
den Wert aus, auf den die jeweilige Option gesetzt ist. Ein Beispiel
für den nicht-Booleschen Typ ist scroll.
Hinweis:
Wenn im vi Probleme mit den Pfeiltasten auftreten (z. B. wenn die
Betätigung der Pfeiltasten zu einem Wechsel vom Eingabe- in den
Kommandomodus führt), sollte die Option timeout abgeschaltet wer-
den (set notimeout).
Sie können den vi an Ihre Bedürfnisse und Gewohnheiten anpassen. Der
vi kann zum Beispiel Zeilennummern anzeigen oder Sie in der Status-
zeile informieren, in welchem Modus er sich gerade befindet.
Wenn Sie die Voreinstellungen des vi ändern möchten, haben Sie dazu
drei Möglichkeiten:
- während einer vi-Sitzung
- mit der Umgebungsvariablen EXINIT
- mit der Datei .exrc
Seite 44 Reliant UNIX 5.44 Gedruckt 11/98
vi(1) vi(1)
Möchten Sie sich zum Beispiel die Zeilennummern und den vi-Modus
anzeigen lassen, haben Sie dazu die nachfolgend aufgeführten Möglich-
keiten:
- Während einer vi-Sitzung:
Um sich die Zeilennummern anzeigen zu lassen, benutzen Sie während
einer vi-Sitzung das ex-Kommando set number; mit dem ex-Kommando
set showmode bewirken Sie, daß der vi Ihnen anzeigt, wenn er sich
im Eingabemodus befindet. Die Anpassung gilt dann nur für die Dauer
der Sitzung.
- Mit der Umgebungsvariablen EXINIT:
In die Datei .profile in Ihrem HOME-Dateiverzeichnis müssen Sie
folgende Zeilen schreiben:
EXINIT=`set number showmode`
export EXINIT
Mit dem Kommando . .profile machen Sie die neue Variable Ihrer
Shell bekannt. Rufen Sie nun den vi auf, so werden die Zeilennum-
mern ausgegeben, und der vi zeigt Ihnen an, wenn Sie im Eingabe-
Modus sind. Diese Voreinstellung ist nun immer wirksam.
- Mit der Datei .exrc:
Diese Datei müssen Sie selbst anlegen. In .exrc definieren Sie
ständige Voreinstellungen des vi. Damit der vi Zeilennummern aus-
gibt und den Modus anzeigt, müssen Sie in diese Datei folgende
Zeile eintragen:
set number showmode
Die Datei .exrc muß im HOME-Dateiverzeichnis stehen. .exrc-Dateien
in Unterdateiverzeichnissen werden aus Sicherheitsgründen vom vi
nicht ausgewertet. .exrc im HOME-Dateiverzeichnis wird immer gele-
sen!
Die für vi definierten Voreinstellungen gelten auch für ex.
Die Kombination der verschiedenen Möglichkeiten ist erlaubt, unter-
liegt jedoch gewissen Bedingungen:
Während einer vi-Sitzung definierte Voreinstellungen haben höchste
Priorität. Sie können daher während einer Sitzung jederzeit die aktu-
ellen Voreinstellungen mit dem ex-Kommando set ändern.
Wenn EXINIT definiert ist, wird die Datei $HOME/.exrc nicht ausgewer-
tet
Seite 45 Reliant UNIX 5.44 Gedruckt 11/98
vi(1) vi(1)
UMGEBUNGSVARIABLEN
LINES Anzahl der Zeilen pro Bildschirm
TERM Typ der benutzten Datensichtstation
EXINIT Umgebungsvariable mit Voreinstellungen für ex und vi.
INTERNATIONALE UMGEBUNG
Die Umgebungsvariable LCMESSAGES bestimmt die Sprache der Meldungs-
texte. Wenn LCMESSAGES nicht oder als leere Zeichenkette definiert
ist, wird der Wert von LANG als Standardwert herangezogen. Ist auch
LANG nicht oder als leere Zeichenkette definiert, verhält sich das
System so, als wäre es nicht internationalisiert.
Die Umgebungsvariable LCALL bestimmt die gesamte internationale Umge-
bung. LCALL hat Vorrang vor allen anderen Umgebungsvariablen im
Bereich der Internationalisierung.
DATEIEN
$HOME/.exrc
Datei mit Voreinstellungen für ex und vi. Diese Voreinstellungen
sind nicht wirksam, wenn EXINIT definiert ist oder während einer
vi-Sitzung etwas Widersprüchliches definiert wird.
SIEHE AUCH
edit(1), ex(1).
el Lozy, M.: Editing in a UNIX Environment. The vi/ex Editor.
Seite 46 Reliant UNIX 5.44 Gedruckt 11/98