(screen oriented (visual) display editor)
Der vi (visual) ist ein bildschirmorientierter Texteditor.
Den vi (außer im Line-Mode) können nur die Benutzer verwenden, die sich über rlogin Zugang zur POSIX-Shell verschafft haben.
Bei Aufruf von vi auf einem Blockterminal wird automatisch der Editor ex gestartet.
Aufbau dieser Beschreibung
Die Beschreibung des vi gliedert sich in acht Teile:
Kommandomodus
Eingabemodus
Zeilen-Kommandomodus
ex-Kommandomodus
ex-Eingabemodus
vi - Bildschirmorientierter Editor (POSIX Kommandos 2023-10, #233)
vi - Bildschirmorientierter Editor (POSIX Kommandos 2023-10, #233)
vi - Bildschirmorientierter Editor (POSIX Kommandos 2023-10, #233)
Puffer sichern und vi verlassen
Editorpuffer des vi
Positionieranweisungen des vi
vi - Bildschirmorientierter Editor (POSIX Kommandos 2023-10, #233)
Definitionen
Control-Kommandos
Kommandos des vi-Kommandomodus
Anpassung an die Datensichtstation
Voreinstellung des vi
Umgebungsvariablen
Kommandoübersicht (Auszug)
In der folgenden Übersicht sind die gebräuchlichsten vi-Kommandos in Funktionsgruppen zusammengefasst. Im Abschnitt Kommandos finden Sie eine ausführliche Beschreibung in alphabetischer Reihenfolge.
vi laden
vi
<enter>
vi mit leerem Editorpuffer aufrufen
vi datei<enter>
vi mit der zu editierenden datei laden
vi beenden
ZZ
vi verlassen, Editorpuffer in die editierte Datei schreiben; wie :wq
:w
<enter>
Editorpuffer in editierte Datei schreiben
:w datei<enter>
Editorpuffer in datei schreiben
:q
<enter>
vi verlassen falls Änderungen gesichert
:q!
<enter>
vi verlassen, Änderungen gehen verloren
:wq
<enter>
vi verlassen, Editorpuffer in die editierte Datei schreiben; wie ZZ
Schreibmarke positionieren
h
ein Zeichen nach links
j
in der gleichen Spalte eine Zeile vor
+
eine Zeile vor, an Zeilenanfang
<enter>
(Eingabetaste)
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)
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
<enter>
aktuelle Zeile an Bildschirmanfang
z.
aktuelle Zeile an Bildschirmmitte
z-
aktuelle Zeile an Bildschirmende
1G
Dateianfang
nG
Zeile n auf Bildschirmmitte
G
Dateiende
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 Schreibmarke schreiben
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
Ü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 /
im ganzen Editorpuffer nach xyz und 2 Leerzeichen 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 editierenden 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 Satzes, eines Absatzes oder der Datei)
Textmuster mit regulären Ausdrücken suchen und ersetzen
eine Subshell aufrufen
mit einem POSIX-Kommando einen Bereich der aktuellen Datei bearbeiten
mehrere Dateien während einer Sitzung bearbeiten und Text von einer Datei in eine andere kopieren
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.
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 interpretiert 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 dass 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.
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:
ESC
Eingabemodus verlassen, zurück in den vi-Kommandomodus.
CTRL+C
Eingabemodus abbrechen, zurück in den vi-Kommandomodus.
<enter>
(Eingabetaste)
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 eingegebenen 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 shiftwidth 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.
vi-Zeilen-Kommandomodus
Im vi-Zeilen-Kommandomodus können Sie vi-, ex- und POSIX-Kommandos 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 Eingabe eines Ausrufezeichens !, gefolgt von einer Positionieranweisung auf eine Zeile. Kommandoeingaben im Zeilen-Kommandomodus schließen Sie mit der Eingabetaste oder ESC ab. Mit CTRL+C brechen Sie die Eingabe ab.
Achtung!
Im vi-Zeilen-Kommandomodus löscht ESC ein gerade eingegebenes Kommando nicht, sondern schickt es ab. Das Kommando wird also ausgeführt! Im vi-Zeilen-Kommandomodus müssen Sie CTRL+C verwenden, um ein eingegebenes Kommando zu löschen.
:
Die Eingabe eines Doppelpunktes : im vi-Kommandomodus bewirkt, dass die nachfolgende Eingabe bis zum nächsten ESC oder Betätigung der Eingabetaste als ex-Kommando interpretiert wird. (Alle ex-Kommandos sind unter ex, ex-Kommandos beschrieben.) Nach Eingabe des Doppelpunktes springt die Schreibmarke in die unterste Zeile, die Statuszeile. Der Doppelpunkt und das eingegebene Kommando werden nun angezeigt. Sie können fast alle ex-Kommandos verwenden; 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 Sitzung vorher bearbeiteten Datei (siehe ex, Aktuelle und sekundäre Datei).
Beispiel
:! diff # %<enter>
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 Ausrufezeichen ausgegeben. Geben Sie als Positionieranweisung ein Ausrufezeichen ein, gilt als Position die aktuelle Zeile. Ihre Positionieranweisung wird nicht angezeigt. Sie können nun ein POSIX-Kommando eingeben, das Sie mit der Eingabetaste oder ESC freigeben. Der Bereich von der aktuellen Zeile bis zur angegebenen Position wird, falls das POSIX-Kommando von der Standard-Eingabe liest, zur Eingabe des POSIX-Kommandos und nach Ende des Kommandos durch die Ausgabe (Standard-Ausgabe und Standard-Fehlerausgabe) des POSIX-Kommandos ersetzt. Falls das Kommando nichts ausgibt (z.B. true), wird der angegebene Bereich gelöscht, also durch die leere Zeichenkette ersetzt.
ex-Kommandomodus
Den ex-Kommandomodus schalten Sie ein, indem Sie im vi-Kommandomodus das Kommando Q eingeben. Damit verlassen Sie den bildschirmorientierten vi und gelangen in den zeilenorientierten ex. Sie wechseln in den vi zurück, indem Sie im ex-Kommandomodus das Kommando vi <enter>
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
Programmaufruf
Nach dem Aufruf befindet sich der vi im vi-Kommandomodus. Falls Sie in den vi-Eingabemodus gewechselt haben, kehren Sie durch Eingabe von ESC (bzw. CTRL+C) wieder in den vi-Kommandomodus zurück.
Syntax
vi
[ option]... [ datei]... |
(t - tag) Die Datei mit markierung wird zum Editieren aufgerufen. Der Editor positioniert die Zeile mit der Definition der Markierung in die Mitte des Bildschirms. Im gleichen Dateiverzeichnis muss 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 Markierungsdatei tags muss vorher mit dem Kommando ctags erzeugt worden sein.
(l - lisp) Der Lisp-Modus wird eingeschaltet. Der Text wird so eingerückt, dass er ein für Lisp-Programme typisches Aussehen bekommt.
(r - recover) Mit dieser Option -r können Sie Ihre Sitzung wiederherstellen, falls das System oder der vi während der vorhergehenden Sitzung abgestürzt sind.
(L - List) Nach einem Absturz des Systems oder des Editors wird eine Liste aller geretteten Dateien ausgegeben.
(R - Read-only) datei wird nur zum Lesen geöffnet. Damit können Sie ein versehentliches Überschreiben von datei verhindern. Achtung!
(w - window) Der Bildschirm wird aus n Textzeilen aufgebaut. -w n nicht angegeben:
(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 Suchvorgang) nichts anderes bewirkt. kommando nicht angegeben: kommando angegeben:
n ist eine ganze Zahl. vi positioniert auf die n-te Zeile der Datei.
vi positioniert auf die Zeile, die muster enthält. muster ist ein einfacher regulärer Ausdruck (siehe Tabellen und Verzeichnisse, Reguläre Ausdrücke). Falls muster Sonderzeichen enthält, müssen Sie die Sonderzeichen jeweils mit einem Gegenschrägstrich \ entwerten oder muster in Hochkommas ’muster’ einschließen, damit die Shell die Sonderzeichen nicht interpretiert.
ex-kommando kann ein beliebiges ex-Kommando sein. Das ex-Kommando muss in Hochkommas oder Anführungszeichen eingeschlossen 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
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).
Name der zu editierenden Datei. Sie können mehrere Dateien angeben. 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). datei nicht angegeben: |
Akustisches Signal (nicht für Blockterminals)
Sie erhalten ein akustisches Signal wenn
Sie im Kommandomodus die Tasten ESC oder CTRL+C drücken
Sie ein unerlaubtes Kommando verwenden
vi ein Signal SIGINT erhält
Erhält der vi ein Signal SIGINT (CTRL+C) 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 Signals SIGINT im Kommandomodus bewirkt ein akustisches Signal.
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 dargstellt werden. Die Anzahl der vom vi verwendeten Bildschirmzeilen wird in diesem Fall automatisch festgestellt.
Die unterste Zeile auf dem Bildschirm ist die Status- und Kommandozeile. Sie dient zur Eingabe von Kommandos und zur Ausgabe von Informationen 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 Dateiende. 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 Bildschirm nicht ordnungsgemäß darstellen kann. Dies kann zwei Ursachen 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, dass 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:
beginnenAusgabe von Meldungen
Ausgabe von ex-Kommandos
Anzeige des Modus (Kommandomodus wird nicht angezeigt)
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 Orginaldatei 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 angelegt, wenn der Editorpuffer in die Datei geschrieben wird.
Editorpuffer sichern und vi verlassen
Um den Editorpuffer zu sichern oder den vi zu verlassen, muss sich der vi im vi-Kommandomodus befinden.
Mit folgendem ex-Kommando (siehe Arbeitsweise des vi, ex-Kommandos eingeben) 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 vorgenommene Änderungen gehen verloren.
:x
(x - exit, ex-Kommando)
vi verlassen und den geänderten Editorpuffer 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 Editorpuffer in die angegebene Datei datei schreiben.
datei nicht angegeben:
Der Inhalt des Editorpuffers wird in die editierte Datei geschrieben.
Editorpuffer des vi
Der vi verfügt über
einen temporären Puffer
9 nummerierte 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 temporä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 temporären Puffer nicht. Dadurch können Sie, indem Sie P (p) mehrfach verwenden, den gleichen Text auch mehrfach an verschiedene Stellen der Datei einfügen.
Achtung!
Bei jedem Kommando, das den Editorpuffer ändert, wird der Inhalt des temporären Puffers überschrieben. Deshalb können Sie den temporä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 Positionierung 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 benutzen, funktioniert nach Benutzung der Pfeil-Tasten das vi-Kommando U (u) nicht.
Nummerierte Puffer
Wenn Sie eine oder mehrere Zeilen löschen (vi-Kommando d), wird der gelöschte Text in den ersten von neun nummerierten Puffer kopiert. Wenn Sie nun nochmals Zeilen löschen, wird der Inhalt von Puffer 1 in Puffer 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 nummerierten Puffer können Sie mit den vi-Kommandos P und p zurückholen. Die nummerierten 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 letzten vi-Kommando Text aus einem nummerierten Puffer zurückgeholt. Nach obigem Beispiel holen Sie also den Inhalt des Puffers 5 zurück. Der Inhalt der nummerierten Puffer geht bei Dateiwechsel (mit den ex-Kommandos n oder e) nicht verloren.
Alphabetische 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 Unterschied:
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.
"by4w
Das aktuelle Wort und drei folgende (4w) in den Puffer b kopieren (y).
"cCZeichenkette
ESC
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 Langwort 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 Tabulator
[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
[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]<enter>
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
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 Bildschirm
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 Bildschirmrand
[zeile]z.
aktuelle Zeile oder Zeile mit Nummer zeile auf die Bildschirmmitte
[zeile]z-
aktuelle Zeile oder Zeile mit Nummer zeile an den unteren Bildschirmrand
Muster und Marken positionieren
/Muster
auf Muster vorwärts
?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 Eingabe von ESC (bzw. CTRL+C) 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 Folgenden sind nur die vi-Kommandos beschrieben. Die ex-Kommandos finden Sie beim Kommando ex.
Im vi-Kommandomodus wird mit ESC und CTRL+C ein teilweise eingegebenes Kommando gelöscht. Wenn weder der Editor sich im Eingabemodus befindet, noch ein Kommando teilweise eingegeben wurde, so löst ESC bei Zeichenterminals ein akustisches Signal aus.
Achtung!
Im vi-Zeilen-Kommandomodus löscht ESC ein gerade eingegebenes Kommando nicht, sondern schickt es ab. Das Kommando wird also ausgeführt! Im vi-Zeilen-Kommandomodus müssen Sie CTRL+C 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 paragraphs. Leere Zeilen und solche, an denen ein Abschnitt beginnt, sind ebenfalls Absatzgrenzen.
Abschnitt
Ein Abschnitt ist festgelegt durch den Wert der ex-Option sections. Zeilen, die mit Formularvorschub CTRL+L oder der öffnenden geschweiften Klammer { beginnen, zählen ebenfalls als Abschnittsgrenze.
Ist die ex-Option lisp gesetzt, dann zählt jede öffnende runde Klammer ( am Anfang einer Zeile ebenfalls als Abschnittsgrenze.
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 Langwort
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, dass 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 beeinflusst nur die Wirkung des nachfolgenden Kommandos. Haben Sie eine falsche Zahl angegeben, dann können Sie die Eingabe durch ESC rückgä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.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 Bildschirmseiten zurückgeblättert werden soll. Falls möglich, werden auf die neue Bildschirmseite zwei Zeilen der vorhergehenden Bildschirmseite ü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 vorwärts gerollt. Mit zahl kann angegeben werden, 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.
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
^
CTRL+D unterbricht das automatische Einrücken für diese Zeile.
0
CTRL+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
evtl. 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 dem Korrekturzeichen)
Im vi-Kommandomodus:
Die Schreibmarke wird um zahl Zeichen nach links bewegt, höchstens 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
Die Schreibmarke wird innerhalb der aktuellen Spalte um zahl Textzeilen nach unten bewegt.
Entspricht CTRL+N und j.
CTRL+I
Die aktuelle Bildschirmausgabe wird gelöscht und wieder neu aufgebaut. Dieses Kommando können Sie verwenden, wenn Meldungen oder Nachrichten auf dem Bildschirm ausgegeben wurden (z.B. mit write).
[zahl]
CTRL+M
(gleichbedeutend mit Eingabetaste)
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 Platzhalterzeichen @ 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 Tabulatorzeichen 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ückwärts in Richtung Dateianfang gerollt. Mit zahl können Sie angeben, 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.
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 ESC 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 Textes 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 ESC)
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 ausgeführt.
Im vi-Eingabemodus:
Der vi-Eingabemodus wird beendet.
ESC
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, dass die Angabe optional ist. Die eingegebene Zahl wird nicht angezeigt, sondern beeinflusst nur die Wirkung des nachfolgenden Kommandos. Haben Sie eine falsche Zahl angegeben, dann können Sie die Eingabe mit ESC löschen.
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 desvi-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, werden alle Zeilen bearbeitet, die sich ganz oder teilweise im angegebenen 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 positioniert wurde. Falls zeilenweise positioniert wurde, werden alle Zeilen (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 positioniert) 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.
[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 vorhergehenden Wortes in der aktuellen Zeile bewegt.
[zahl]B
(B - back)
Die Schreibmarke wird zum Anfang des zahl-ten vorhergehenden Langwortes bewegt.
[zahl]cposition
(c - change)
Textbereich überschreiben.
Auf dieses Kommando muss eine Positionieranweisung folgen.
Wenn sich die angegebene Position noch in der gleichen Textzeile 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 zeilenweise 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 Eingabemodus 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, dass 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$.
[zahl]dposition
[zahl]dd
(d - delete)
Textbereich löschen.
Auf dieses Kommando muss 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 nummerierten 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. Entspricht 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 Langwortes positioniert.
[zahl]fzeichen
(f - find)
Auf f muss 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 muss 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.
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 Bildschirmzeile 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 beiden 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.
[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 Leerzeichen.
[zahl]L
(L - last)
Die Schreibmarke wird zum ersten Zeichen in der letzten 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 muss 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 Zeichen 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.
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
Text aus temporärem Puffer holen
(p - put)
Schreibt den Text aus dem temporären Puffer hinter die aktuelle Position der Schreibmarke. 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 nummeriertem oder alphabetischem Puffer holen
puffer kann sein:
eine Ziffer von 1-9: der Text wird aus dem entsprechenden nummerierten Puffer geholt
ein Buchstabe: der Text wird aus dem entsprechenden alphabetischen Puffer geholt.
P
"pufferP
(P - put)
Ähnlich p; der Text wird jedoch vor die aktuelle Position der Schreibmarke bzw. die aktuelle Zeile eingefügt.
Q
(Q - quit)
vi wird beendet, und der ex-Kommandomodus wird eingeschaltet. Um in den vi-Kommandomodus zurückzukehren müssen Sie vi <enter> 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 aktuellen Position der Schreibmarke in den vi-Eingabemodus Die eingegebenen Zeichen werden jedoch nicht eingefügt, sondern überschreiben jeweils das Zeichen unter der Schreibmarke. Mit ESC 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.
Beispiel
5sbla bla bla
ESC
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
ESC
[zahl]S
(S - substitute)
vi-Eingabemodus einschalten. Ganze Zeilen werden ersetzt (entspricht cc). Mit zahl kann angegeben werden, wieviele Zeilen ersetzt werden sollen.
[zahl]t zeichen
(t - to)
Auf t muss 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 Wiederholungsfaktor angeben, positioniert vi vor das zahl-te Zeichen. Eine Wiederholung des Suchkommandos mit , bzw. ; ist nicht sinnvoll.
[zahl]T zeichen
(T - to)
Auf T muss 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 werden, usw.
Beispiel
d3w
löscht drei Worte ab aktueller Position der Schreibmarke.
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.
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 nummerierten 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 Wortes 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 Position der Schreibmarke, zahl Zeichen in der aktuellen Zeile gelöscht.
[zahl]X
Das Zeichen vor der Schreibmarke wird gelöscht. Wird zahl angegeben, 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 muss eine Positionieranweisung folgen. 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, dass 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.
"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 Kleinbuchstabe.
Beispiele
"a4yy
die aktuelle und drei folgende Textzeilen in den alphabetischen Puffer a sichern.
"ap
Inhalt von a im Anschluss an aktuelle Position ausgeben.
[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 gesichert. puffer ist ein Großbuchstabe oder ein Kleinbuchstabe. Entspricht "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 muss auf z folgen. zeichen kann sein:
<enter> (Eingabetaste) 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.
Muster bezeichnet die Zeile, in der Muster zum ersten Mal vorkommt.
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 Dateinamen (siehe ex-Kommando f) gesichert. Entspricht ex-Kommando x.
[zahl]
Leerzeichen
Die Schreibmarke wird um zahl Zeichen nach rechts bewegt (höchstens bis zum Zeilenende).
Entspricht l.
[zahl]!position
Mit Ausrufezeichen ! und einer Positionieranweisung können Sie in den vi-Zeilen-Kommandomodus wechseln, um ein POSIX-Kommando einzugeben. Der Bereich von der aktuellen Zeile bis zur angegebenen Zeile wird zur Standard-Eingabe des POSIX-Kommandos und durch die Ausgabe (Standard-Ausgabe und Standard-Fehlerausgabe) des POSIX-Kommandos ersetzt. Die Zeilen werden immer ganz übergeben, nie als Teilzeilen.
Die Schreibmarke springt erst nach der Eingabe der Positionieranweisung in die Statuszeile. Die Eingabe des POSIX-Kommandos muss mit <enter> (Eingabetaste) 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 POSIX-Kommando übergeben. Dem zweiten Ausrufezeichen kann eine ganze Zahl vorangestellt werden; damit wird angegeben, wieviele Zeilen einschließlich der aktuellen Zeile an das POSIX-Kommando übergeben werden.
zahl
ist ein Wiederholungsfaktor.
Beispiele
!!wc
<enter>
übergibt die aktuelle Zeile als Eingabe an wc und ersetzt sie durch die Ausgabe von wc.
!1Gsort
<enter>
sortiert den Bereich von der aktuellen Zeile bis Dateianfang.
3!$tr a b
<enter>
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 nummerierten Puffers vorangestellt. Siehe vi-Kommandos d, p und y.
%
Mit Prozent-Zeichen % wird die Schreibmarke zur korrespondierenden 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 wiederholt. Entspricht dem ex-Kommando &.
'marke
(Hochkomma)
Schreibmarke auf markierte Zeile bewegen
Mit Hochkomma Marke ’marke wird die Schreibmarke zum ersten Zeichen der markierten Zeile bewegt, das kein Leer- oder Tabulatorzeichen 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 Positionierkommando 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
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<enter>, ?Muster<enter>
Wird das Doppelte-Hochkomma-Kommando bei einem anderen Kommando als Positionierkommando verwendet, so werden alle Zeilen im angegebenen Bereich als ganze Zeilen behandelt - einschließlich der aktuellen und der markierten Zeile.
Beispiel
d''
Der Bereich von der aktuellen bis zur vorherigen aktuellen 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 deszahl-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 werden 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.
[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 nummerierten Puffers ausgegeben hat, dann gibt ein darauf folgendes Punkt-Kommando den Inhalt des nummerierten Puffers mit der um eins erhöhten Nummer aus usw.
/Muster
<enter>
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 der Eingabetaste. vi positioniert dann die Schreibmarke vorwärts auf die erste gefundene Zeichenkette, die zu Muster passt. Wenn keine passende Zeichenkette gefunden wird, bleibt die Schreibmarke auf der aktuellen Position. 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 Schreibmarke 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 Position der Schreibmarke (einschließlich) bis zur angegebenen Position (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
<enter>
Es bleibt:
Ein Taucher taugt nix.
?
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 aktuellen Zeile bewegt. Wenn der Null eine andere Ziffer vorangestellt 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 der Eingabetaste abgeschickt.
Falls Sie ein ex-Kommando eingeben wollen, das länger als eine Eingabezeile ist, müssen Sie mit Q in den ex-Kommandomodus wechseln.
[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 < muss 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 Multiplikator.
position kann auch ein zweites Kleinerzeichen sein. << bewirkt, dass die aktuelle Zeile verschoben wird (oder zahl Zeilen, einschließlich der aktuellen Zeile).
[zahl]=position
Auf das Gleichheitszeichen = muss 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. position kann auch ein zweites Gleichheitszeichen sein. == bewirkt, dass die aktuelle Zeile eingerückt wird (oder zahl Zeilen , einschließ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
(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 Positionierkommando verwendet, wird der Bereich zwischen der aktuellen Postion der Schreibmarke (einschließlich) und der vorherigen aktuellen Position (ausschließlich) bearbeitet.
Beispiel
d`a
Der Bereich von der aktuellen Position der Schreibmarke bis zur Marke a wird gelöscht.
``
(doppelte Gegenhochkommas)
Schreibmarke auf vorherige aktuelle Position bewegen
Durch das Kommando doppeltes Gegenhochkomma `` wird die Schreibmarke 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<enter>, ?Muster<enter>
Wird das ``-Kommando bei einem anderen Kommando als Positionierkommando 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 Wiederholungsfaktor angegeben werden.
[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 aktuellen Schreibmarke ein Kleinbuchstabe, so wird er in einen Großbuchstaben umgewandelt. Steht an der aktuellen Schreibmarkenposition ein Großbuchstabe, so wird er in einen Kleinbuchstaben umgewandelt. 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 Datensichtstation ab. In POSIX brauchen Sie den vi nicht anzupassen.
vi benutzt den Inhalt der Umgebungsvariablen TERM, um in einer Datenbank (/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üssen 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
Achtung!
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.
Voreinstellung des vi
Voreinstellungen werden mit ex-Optionen gesetzt; beim Kommando ex, Abschnitt ex-Optionen, ist beschrieben, welche Voreinstellungen möglich 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 Boole’schen 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-Boole’schen Typen gibt set all den Wert aus, auf den die jeweilige Option gesetzt ist. Ein Beispiel für den nicht-Boole’schen Typ ist scroll.
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 werden (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 Statuszeile 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
Möchten Sie sich zum Beispiel die Zeilennummern und den vi-Modus anzeigen lassen, haben Sie dazu die nachfolgend aufgeführten Möglichkeiten:
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, dass 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 (siehe Kommando Punkt .). Rufen Sie nun den vi auf, so werden die Zeilennummern 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 ausgibt und den Modus anzeigt, müssen Sie in diese Datei folgende Zeile eintragen:
set number showmode
Die Datei .exrc muss im HOME-Dateiverzeichnis stehen. .exrc-Dateien in Unterdateiverzeichnissen werden aus Sicherheitsgründen vom vi nicht ausgewertet. .exrc im HOME-Dateiverzeichnis wird immer gelesen!
Die für vi definierten Voreinstellungen gelten auch für ex.
Die Kombination der verschiedenen Möglichkeiten ist erlaubt, unterliegt 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 aktuellen Voreinstellungen mit dem ex-Kommando set ändern.
Wenn EXINIT definiert ist, wird die Datei $HOME/.exrc. nicht ausgewertet.
Datei
$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. |
Variable
LINES Anzahl der Zeilen pro Bildschirm TERM Typ der benutzten Datensichtstation EXINIT Umgebungsvariable mit Voreinstellungen für ex und vi. COLUMNS Wenn diese Variable gesetzt ist, dann wird ihr Wert für die Definition der Breite des Editierfensters beim Editiermodus der POSIX-Shell und für die Ausgabe der select-Liste verwendet. Diese Variable ist sinnvoll, wenn der Zugang zur POSIX-Shell über rlogin erfolgt. PATH Der Suchpfad für Shell-Kommandos, die in den Editorkommandos shell, read und write angegeben werden können. SHELL Der Kommandozeilen-Interpreter, der bei !, shell, read oder anderen Kommandos mit einem Operanden der Form !string verwendet wird. Für das shell Kommando wird das Programm nur dem -i Argument aufgerufen, bei allen anderen mit zwei Argumenten -c und string. Ist SHELL nicht gesetzt oder hat den Wert 0, wird sh verwendet. |
Internationale Umgebung
Die folgenden Umgebungsvariablen beeinflussen die Ausführung des Kommandos vi: LANG Gibt einen Standardwert für die Variablen für die internationale Umgebung an, die nicht gesetzt oder Null sind. Ist LANG nicht gesetzt oder Null, wird der entsprechende Standardwert der internationalen Umgebung verwendet. Enthält eine der Internationalisierungsvariablen eine ungültige Einstellung, verhält sich das Kommando so, als sei keine der Variablen definiert worden. LC_ALL Ist diese Variable auf einen Wert gesetzt, d. h. ist sie nicht leer, überschreibt dieser Wert die Werte aller übrigen Internationalisierungsvariablen. LC_CTYPE Legt die internationale Umgebung für die Interpretation der Byte-Folgen eines Datentexts als Zeichen fest (z.B. Singlebytezeichen im Unterschied zu Mehrbytezeichen in Argumenten und Eingabedateien) sowie die Einteilung der Zeichen in Groß- und Kleinbuchstaben und deren Übereinstimmung. LC_MESSAGES Legt die internationale Umgebung für Format und Inhalt der Diagnosemeldungen fest, die in die Standardfehlerausgabe geschrieben werden. NLSPATH Legt den Pfad der Meldungsdateien für LC_MESSAGES fest. |
Siehe auch
edit, ex |