Sie sind auf Seite 1von 101

vi und Vim

kurz & gut


vi und Vim
kurz & gut
Arnold Robbins and Kathrin Lichtenberg
Beijing Cambridge Farnham Kln Sebastopol Tokyo
Kommentare und Fragen knnen Sie gerne an uns richten:
O'Reilly Verlag GmbH & Co. KG
Balthasarstr. 81
50670 Kln
E-Mail: kommentar@oreilly.de
Copyright der deutschen Ausgabe:
2011 O'Reilly Verlag GmbH & Co. KG
Satz: Reemers Publishing Services GmbH, Krefeld, www.ree-
mers.de, Druck: fgb freiburger graphische betriebe; www.fgb.de
Dieses Buch ist auf 100% chlorfrei gebleichtem Papier gedruckt.
Deutsche bersetzung:
Lektorat: Inken Kiupel, Kln
Korrektorat: Friederike Danecke, Zlpich
Satz: Gerd Miske, Kln
Umschlaggestaltung: Danna Dyer, Boston & Michael Oreal, Kln
Produktion: Karin Driesen, Kln
Druck & Bindung; fgb freiburger graphische betriebe; www.fgb.de
Ausgabe: 1. Auflage 2011
ISBN: 978-3-89721-321-0
Inhalt
vi und Vim kurz & gut 1
Einfhrung 1
Konventionen 1
Danksagungen 2
Kommandozeilenoptionen 2
vi-Befehle 3
Krzel fr den Einfgemodus 10
Substitution und regulre Ausdrcke 13
ex-Befehle 18
Initialisierung 23
Wiederherstellung 24
vi-Einstellungsoptionen 24
Nichts ist wie das Original 26
Verbesserte Tags und Tag-Stacks 26
Vim verbessertes vi 28
nvi New vi 65
elvis 70
vile vi like Emacs 80
Internetressourcen fr vi 88
Programmquellen und Kontaktinformationen 89
Index 91
v
vi und Vim kurz & gut
Einfhrung
Diese Kurzreferenz ist die Ergnzung zu Learning the vi and
Vim Editors von Arnold Robbins et al. Sie beschreibt die Kom-
mandozeilenoptionen von vi, die Befehle im Befehlsmodus, ex-
Befehle und -Optionen, regulre Ausdrcke und die Verwen-
dung des Substitute-Befehls (s) und andere einschlgige Infor-
mationen fr die Benutzung von vi.
Diese Ausgabe behandelt nicht nur die vi-Klone nvi, elvis und
vile, sondern auch den Editor Vim, der in der GNU/Linux-
Welt zum De-facto-Standard fr vi geworden ist.
Die Solaris-Version von vi diente als Referenz-Version des
Original-vi fr diese Kurzreferenz.
Konventionen
Folgende Konventionen gelten in diesem Buch:
Nichtproportionalschrift
Fr Dateinamen, Befehlsnamen, Optionen und alles, was
wrtlich eingetippt werden muss.
Nichtproportionalschrift kursiv
Fr Text in Befehlen, der ersetzt werden soll.
1
Kursiv
Fr Text in normalem Text, der ersetzt werden soll, Inter-
net-URLs, Dateinamen und Pfade, Hervorhebungen und
neue Begriffe bei der ersten Definition.
[ ... ]
Identifiziert optionalen Text; die eckigen Klammern wer-
den nicht getippt.
STRG-G
Kennzeichnet ein Tastenkrzel.
Danksagungen
Dank geht an Robert P. J. Day und Elbert Hannah, die diese
Ausgabe korrigiert haben. Das Produktionsteam bei OReilly
Media war groartig und half mir, das Buch in seiner aktuellen
Form herzustellen genau wie ich es mir gewnscht hatte. Ein
besonderer Dank geht an meinen Lektor Andy Oram, weil er
mit stetiger Ermutigung dieses Projekt in Gang gehalten hat.
Kommandozeilenoptionen
Befehl Aktion
vi Datei Startet vi in Datei
vi Datei1 Datei2 Startet vi der Reihe nach in Dateien
view Datei Startet vi in Datei mit Schreibschutz
vi -R Datei Startet vi in Datei mit Schreibschutz
vi -r Datei Stellt Datei und aktuelle nderungen nach Absturz wieder her
vi -t Tag Sucht nach Tag und beginnt mit der Bearbeitung bei seiner
Definition
vi -w n Setzt die Fenstergre auf n; sinnvoll bei einer langsamen
Verbindung
vi + Datei ffnet Datei an der letzten Zeile
vi +n Datei ffnet Datei direkt an der Zeile Nummer n
2 | vi und Vim kurz & gut
Befehl Aktion
vi -c Befehl
Datei
ffnet Datei und fhrt Befehl aus, bei dem es sich meist um
einen Suchbefehl oder eine Zeilennummer handelt (POSIX)
vi +/Muster
Datei
ffnet Datei direkt bei Muster
ex Datei Startet ex in Datei
ex - Datei <
Skript
Startet ex in Datei, nimmt Befehle aus Skript; unterdrckt Info-
meldungen und Prompts
ex -s Datei <
Skript
Startet ex in Datei, nimmt Befehle aus Skript; unterdrckt Info-
meldungen und Prompts (POSIX)
vi-Befehle
vi- Befehle werden im Befehlsmodus eingegeben (dem Stan-
dardmodus), in dem Sie die Befehle benutzen, um sich auf dem
Bildschirm zu bewegen und Operationen auf dem Text auszu-
fhren.
Die meisten vi-Befehle folgen dem allgemeinen Muster
[Befehl][Zahl]Textobjekt
oder der quivalenten Form
[Zahl][Befehl]Textobjekt
Bewegungsbefehle
vi-Bewegungsbefehle unterscheiden zwischen zwei Arten von
Wrtern. Die kleingeschriebenen Befehle definieren ein
Wort als eine Folge von Unterstrichen, Buchstaben und Zif-
fern. Die grogeschriebenen Befehle definieren ein Wort als
eine Folge von Nichtleerzeichen.
vi-Befehle | 3
Befehl Bedeutung
Zeichen
h, j, k, l Nach links, unten, oben, rechts (, , ,
)
Text
w, W, b, B Ein Wort vorwrts, zurck
e, E Wortende
), ( Anfang des nchsten, vorherigen Satzes
}, { Anfang des nchsten, vorherigen Absatzes
] ], [ [ Anfang des nchsten, vorherigen
Abschnitts
Zeilen
ENTER Erstes nichtleeres Zeichen der nchsten
Zeile
0, $ Erste, letzte Position der aktuellen Zeile
^ Erstes nichtleeres Zeichen der aktuellen
Zeile
+, - Erstes nichtleeres Zeichen der nchsten,
vorherigen Zeile
n | Spalte n der aktuellen Zeile
H, M, L Oberste, mittlere, letzte Zeile des Bild-
schirms
n H n (Anzahl) der Zeilen nach der obersten
Zeile
n L n (Anzahl) der Zeilen vor der letzten Zeile
Scrollen
STRG-F , STRG-B Ein Bildschirm vor, zurck scrollen
STRG-D , STRG-U Einen halben Bildschirm nach oben, unten
scrollen
STRG-E , STRG-Y Eine weitere Zeile unten, oben im Fenster
zeigen
4 | vi und Vim kurz & gut
Befehl Bedeutung
z ENTER Zeile mit Cursor neu positionieren: oben am
Bildschirm
z . Zeile mit Cursor neu positionieren: in der
Mitte des Bildschirms
z Zeile mit Cursor neu positionieren: unten
am Bildschirm
STRG-L Bildschirm neu zeichnen (ohne scrollen)
Befehl Bedeutung
Suchen
/Muster Vorwrtssuche nach Muster
?Muster Rckwrtssuche nach Muster
n, N Wiederholen der letzten Suche in der sel-
ben, entgegengesetzten Richtung
/, ? Wiederholen der vorherigen Suche vor-
wrts, rckwrts
f x Suche vorwrts nach Zeichen x in der aktu-
ellen Zeile
F x Suche rckwrts nach Zeichen x in der aktu-
ellen Zeile
t x Suche vorwrts nach dem Zeichen vor x in
der aktuellen Zeile
T x Suche rckwrts nach dem Zeichen nach
x in der aktuellen Zeile
; Wiederhole vorherige Suche auf der aktu-
ellen Zeile
, Wiederhole vorherige Suche auf aktueller
Zeile in entgegengesetzter Richtung
Zeilennummer
STRG-G Zeige aktuelle Zeilennummer an
n G Geh zu Zeile Nummer n
G Geh zur letzten Zeile in Datei
vi-Befehle | 5
Befehl Bedeutung
: n Geh zu Zeile n in Datei
Position markieren
m x Markiere aktuelle Position als x
x Verschiebe Cursor auf Marke x (Accent gra-
ve)
Kehre zur vorheriger Marke oder zu Kontext
zurck (zweimal Accent grave)
x Geh zum Anfang der Zeile, die die Marke
x enthlt (einfaches Anfhrungszeichen)
Kehre zum Anfang der Zeile zurck, die die
vorherige Marke enthlt (zwei einfache
Anfhrungszeichen)
Bearbeitungsbefehle
Befehl Aktion
Einfgen
i, a Text vor, nach dem Cursor einfgen
I, A Text vor, nach dem Anfang, Ende einer Zeile
einfgen
o, O Unter, ber dem Cursor neue Zeile fr Text
ffnen,
ndern
cw Wort ndern
cc Aktuelle Zeile ndern
c Bewegung Text ndern zwischen Cursor und Ziel der
Bewegung
C ndern am Zeilenende
r Einzelnes Zeichen ersetzen
R Zeichen berschreiben
6 | vi und Vim kurz & gut
Befehl Aktion
s Substituieren: Zeichen lschen und neuen
Text einfgen
S Substituieren: aktuelle Zeile lschen und
neuen Text einfgen
Lschen, verschieben
x Zeichen unter Cursor lschen
X Zeichen vor Cursor lschen
dw Wort lschen
dd Aktuelle Zeile lschen
d Bewegung Text lschen zwischen Cursor und Ziel der
Bewegung
D Bis zum Zeilenende lschen
p, P Gelschten Text hinter, vor den Cursor set-
zen
" n p Text aus Lschpuffer Nummer n hinter Cur-
sor setzen (fr die letzten neun Lschun-
gen)
Kopieren
yw Wort kopieren
yy Aktuelle Zeile kopieren
" a yy Aktuelle Zeile in benannten Puffer a (az)
kopieren; grogeschriebene Namen hn-
gen Text an
y Bewegung Text kopieren zwischen Cursor und Ziel der
Bewegung
p, P Kopierten Text hinter, vor Cursor setzen
" a P Text aus Puffer a vor Cursor (az) setzen
Andere Befehle
. Letzten Bearbeitungsbefehl wiederholen
u, U Letzte Bearbeitung widerrufen, aktuelle
Zeile wiederherstellen
vi-Befehle | 7
Befehl Aktion
J Zwei Zeilen zusammenfgen
ex-Bearbeitungsbefehle
:d Zeilen lschen
:m Zeilen verschieben
:co or :t Zeilen kopieren
:.,$d Lschen von aktueller Zeile bis Dateiende
:30,60m0 Verschiebe Zeilen 30 bis 60 an Dateianfang
:.,/Muster/co$ Kopiere von aktueller Zeile durch Zeile, die
Muster enthlt, bis Dateiende
Exit-Befehle
Befehl Bedeutung
:w Datei schreiben (sichern)
:w! Datei schreiben (sichern), Schutz berge-
hen
:wq Datei schreiben (sichern) und schlieen
:x Datei schreiben (sichern) und schlieen
ZZ Datei schreiben (sichern) und schlieen
:30,60w neueDatei Schreiben von Zeile 30 bis Zeile 60 als neu-
eDatei
:30,60w>> Datei Schreiben von Zeile 30 bis Zeile 60 und
Anhngen an Datei
:w %.neu Schreiben des aktuellen Puffers namens
Datei als Datei.neu
:q Datei schlieen
:q! Datei schlieen, Schutz bergehen
Q Beenden von vi und Aufrufen von ex
:e Datei2 Bearbeiten von Datei2, ohne vi zu verlassen
:n Nchste Datei bearbeiten
8 | vi und Vim kurz & gut
Befehl Bedeutung
:e! Zur Version der aktuellen Datei zum Zeit-
punkt des letzten Schreibens (Speicherns)
zurckkehren
:e # Alternative Datei bearbeiten
:vi Aufruf des vi-Editors aus ex
: Aufruf eines ex-Befehls aus dem vi-Editor
heraus
% Aktueller Dateiname (substituiert in ex-
Kommandozeile)
# Alternativer Dateiname (substituiert in ex-
Kommandozeile)
Tag-Befehle im Solaris-vi-Befehlsmodus
Befehl Aktion
^] Sucht den Ort des Identifiers unter dem
Cursor in der tags-Datei und geht an diese
Stelle; wenn Tag-Stacking aktiviert ist,
wird der aktuelle Ort automatisch auf den
Tag-Stack geschoben
^T Kehrt zum vorherigen Ort im Tag-Stack
zurck, springt also ein Element herunter
Puffernamen
Puffernamen Pufferbenutzung
19 Die letzten neun Lschungen, von der neu-
esten zur ltesten
az Benannte Puffer fr den Einsatz nach
Bedarf; Grobuchstaben werden an die
entsprechenden Puffer angehngt
Puffer- und Markierbefehle
vi-Befehle | 9
Befehl Bedeutung
" b Befehl Fhre Befehl mit Puffer b aus
m x Markiere aktuelle Position mit x
x Verschiebe Cursor zu Zeichen, das mit x
markiert ist (Accent grave)
Kehre an exakte Position der vorherigen
Marke oder des Kontexts zurck (zweimal
Accent grave)
x Verschiebe Cursor an das erste Zeichen der
Zeile, das mit x markiert ist (einfaches
Anfhrungszeichen)
Kehre an Anfang der Zeile der vorherigen
Marke oder des Kontexts zurck (zwei ein-
fache Anfhrungszeichen)
Krzel fr den Einfgemodus
vi bietet zwei Mglichkeiten, die Menge der zu tippenden
Befehle zu verringern: Abkrzungen und Maps.
Wortabkrzung
:ab Abk Phrase
Definiert Abk als eine Abkrzung fr Phrase .
:ab
Listet alle definierten Abkrzungen auf.
:unab Abk
Entfernt die Definition von Abk.
Befehls- und Einfgemodus-Maps
:map x Sequenz
Definiert Zeichen x als eine Sequenz von Bearbeitungs-
befehlen.
10 | vi und Vim kurz & gut
:unmap x
Deaktiviert die Sequenz, die fr x definiert ist.
:map
Listet die Zeichen auf, die momentan als Maps zugeordnet
sind.
:map! x Sequenz
Definiert Zeichen x als eine Sequenz von Bearbeitungsbe-
fehlen oder Text, der im Einfgemodus erkannt wird.
:unmap! x
Deaktiviert die Sequenz, die fr die Einfgemodus-Map
x definiert ist.
:map!
Listet die Zeichen auf, die momentan fr die Interpretati-
on im Einfgemodus als Maps definiert sind.
Sowohl fr Befehlsmodus- als auch fr Einfgemodus-Maps
kann der Map-Name x folgende Formen annehmen:
Ein Zeichen
Wenn Sie das Zeichen eintippen, fhrt vi die zugeordnete
Befehlsfolge aus.
Mehrere Zeichen
Alle Zeichen mssen innerhalb von einer Sekunde einge-
geben werden. Der Wert von notimeout ndert dieses Ver-
halten.
# n
Funktionstastennotation: a # gefolgt von einer Ziffer n
reprsentiert die Zeichensequenz, die von der Funktions-
taste n der Tastatur gesendet wird.
Um Zeichen wie Escape (^[) oder Carriage Return (^M) einzu-
geben, drcken Sie zuerst STRG-V (^V).
Ausfhrbare Puffer
Benannte Puffer stellen eine weitere Methode dar, um Mak-
ros zu erzeugen, komplexe Befehlsfolgen, die man mit einigen
Tastenkrzeln wiederholen kann. Und so geht's:
Krzel fr den Einfgemodus | 11
1. Tippen Sie eine vi-Befehlsfolge oder einen ex-Befehl mit
einem Doppelpunkt davor ein; kehren Sie in den Befehls-
modus zurck.
2. Lschen Sie den Text in einen benannten Puffer.
3. Fhren Sie den Puffer mit dem Befehl @ aus, gefolgt vom
Pufferbuchstaben.
Der ex-Befehl :@Puffername funktioniert hnlich.
Manche Versionen von vi behandeln * genauso wie @, wenn es
von der ex-Kommandozeile aus benutzt wird. Falls darber
hinaus das Pufferzeichen, das nach dem @- oder *-Befehl ange-
geben wird, * ist, wird der Befehl aus dem (unbenannten) Stan-
dardpuffer genommen.
Automatischer Einzug
Mit dem folgenden Befehl aktivieren Sie den automatischen
Einzug :
:set autoindent
Vier spezielle Eingabesequenzen wirken sich auf den automa-
tischen Einzug aus:
^T Fgt eine Einzugsebene hinzu; wird im Einfgemodus
eingetippt.
^D Entfernt eine Einzugsebene; wird im Einfgemodus ein-
getippt.
^ ^D
Verschiebt den Cursor zurck an den Anfang der Zeile,
aber nur auf der aktuellen Zeile.
*
0 ^D
Verschiebt den Cursor zurck an den Anfang der Zeile
und setzt die aktuelle Auto-Indent-Stufe auf null.

* ^ ^D und 0 ^D gibt es in elvis nicht.


Die nvi 1.79-Dokumentation hat diese beiden Befehle vertauscht, das
Programm verhlt sich aber so, wie es hier beschrieben ist.
12 | vi und Vim kurz & gut
Zum Verschieben von Quellcode knnen zwei Befehle benutzt
werden:
<< Verschiebt eine Zeile um acht Leerzeichen nach links.
>> Verschiebt eine Zeile um acht Leerzeichen nach rechts.
Die vorgegebene Verschiebung entspricht dem Wert von
shiftwidth, und zwar normalerweise acht Leerzeichen .
Substitution und regulre Ausdrcke
Regulre Ausdrcke und ihre Benutzung mit dem Substitute-
Befehl tragen mageblich zur Leistungsfhigkeit von vi beim
Bearbeiten bei.
Der Substitute-Befehl
Die allgemeine Form des Substitute-Befehls sieht so aus:
:[adr1[,adr2]]s/alt/neu/[Flags]
Wird das Suchmuster (:s//Ersetzung/) weggelassen, dann
wird der regulre Ausdruck der letzten Suche oder Substitution
benutzt.
Ein leerer Ersetzungsteil (:s/Muster//) ersetzt den ent-
sprechenden Text durch nichts, so dass er effektiv aus der Zeile
gelscht wird.
Substitutionsflags
Flag Bedeutung
c Besttigt jede Substitution
g ndert auf allen Zeilen alle Vorkommen
von alt auf neu (global)
p Gibt die Zeile aus, nachdem die nderung
erfolgt ist
Oft ist es sinnvoll, den Substitute-Befehl mit dem globalen ex-
Befehl :g zu kombinieren:
Substitution und regulre Ausdrcke | 13
:g/Objektorientiert/s//Buzzword-compliant/g
Regulre Ausdrcke in vi
. (Punkt) Entspricht einem beliebigen einzelnen Zeichen
mit Ausnahme eines Zeilenvorschubs (newline). Denken
Sie daran, dass Punkte als Zeichen behandelt werden.
* Entspricht keinem oder mehreren (so viele es gibt) der
einzelnen Zeichen, die diesem unmittelbar vorangehen.
Der * kann einem Metazeichen wie . oder einem Bereich
in eckigen Klammern folgen.
^ Wird es am Anfang eines reglren Ausdrucks benutzt,
verlangt ^, dass der folgende regulre Ausdruck am
Anfang der Zeile zu finden ist. Steht es nicht am Anfang
eines regulren Ausdrucks, dann steht ^ fr sich selbst.
$ Wird es am Ende eines regulren Ausdrucks benutzt, ver-
langt $, dass der vorhergehende regulre Ausdruck am
Ende der Zeile zu finden ist. Steht es nicht am Ende eines
regulren Ausdrucks, dann steht $ fr sich selbst.
\ Behandelt das folgende Sonderzeichen als normales Zei-
chen. Benutzen Sie \\, um einen Backslash zu bekommen.
~ Entspricht dem regulren Ausdruck, der in der letzten
Suche benutzt wurde.
[ ]
Entspricht einem der Zeichen, die in den Klammern ein-
geschlossen sind. Ein Bereich von aufeinanderfolgenden
Zeichen kann angegeben werden, indem man das erste
und letzte Zeichen in dem Bereich mit einem Bindestrich
abtrennt.
Man kann mehr als einen Bereich in die Klammern ein-
schlieen und eine Mischung aus Bereichen und einzelnen
Zeichen angeben.
Die meisten Metazeichen verlieren innerhalb der Klam-
mern ihre besondere Bedeutung, so dass man sie nicht
gesondert schtzen muss, wenn man sie als normale Zei-
chen benutzen mchte. Die drei Metazeichen, die man
14 | vi und Vim kurz & gut
innerhalb der Klammern weiterhin schtzen muss, sind \
- ]. Der Bindestrich (-) hat Bedeutung als Bereichsspezi-
fikator; um einen normalen Bindestrich zu bekommen,
kann man ihn als erstes Zeichen in den Klammern ange-
ben.
Das Dach (^) hat nur dann eine besondere Bedeutung,
wenn es das erste Zeichen in den Klammern ist, allerdings
unterscheidet sich seine Bedeutung von der des normalen
^-Metazeichens. Als erstes Zeichen in den Klammern
kehrt ^ deren Bedeutung um: Die Klammern entsprechen
dann allen Zeichen, die nicht in der Liste stehen. Zum
Beispiel entspricht [^a-z] jedem Zeichen, das kein Klein-
buchstabe ist.
HI NWEI S
Auf modernen Systemen kann die Lokalisierung
die Interpretation der Bereiche innerhalb der Klam-
mern beeinflussen, so dass vi Buchstaben auf uner-
wartete Weise zuordnet. Es ist besser, die POSIX-
Klammerausdrcke zu benutzen (siehe POSIX-
Klammerausdrcke), um bestimmte Arten von
Zeichen zuzuordnen, etwa alle Klein- oder alle
Grobuchstaben.
\(...\)
Sichert das Muster, das zwischen \( und \) steht, in einem
speziellen Haltepuffer. Man kann auf diese Weise bis zu
neun Muster auf einer einzelnen Zeile sichern.
Innerhalb eines Such- oder Substitutionsstrings knnen
Sie auch die \n-Notation benutzen:
:s/\(abcd\)\1/Alphabetsuppe/
ndert abcdabcd in Alphabetsuppe.

Das funktioniert mit vi, nvi und Vim, aber nicht mit elvis oder vile.
Substitution und regulre Ausdrcke | 15
\< \>
Entspricht Zeichen am Anfang (\<) oder Ende (\>) eines
Wortes. Das Ende oder der Anfang eines Wortes ist ent-
weder durch ein Interpunktionszeichen oder durch ein
Leerzeichen festgelegt. Im Gegensatz zu \(...\) mssen
sie nicht in passenden Paaren benutzt werden.
POSIX-Klammerausdrcke
POSIX- Klammerausdrcke knnen Folgendes enthalten:
Zeichenklassen
Eine POSIX- Zeichenklasse besteht aus Stichwrtern, die
in [: und :] eingeschlossen sind. Die Stichwrter
beschreiben unterschiedliche Zeichenklassen, z. B. alpha-
betische Zeichen, Steuerzeichen usw. (siehe die folgende
Tabelle).
Sortiersymbole
Ein Sortiersymbol ist eine Folge aus mehreren Zeichen,
die als Einheit betrachtet werden mssen. Es besteht aus
den Zeichen, die zwischen [. und .] eingeschlossen sind.
quivalenzklassen
Eine quivalenzklasse listet eine Gruppe von Zeichen auf,
die als quivalent betrachtet werden sollen, etwa e und
. Sie besteht aus einem benannten Element aus der Loka-
lisierung, eingeschlossen zwischen [= und =].
Alle drei Konstrukte mssen innerhalb der eckigen Klammern
eines Klammerausdrucks stehen.
POSIX-Zeichenklassen
Klasse Entsprechende Zeichen
[:alnum:] Alphanumerische Zeichen
[:alpha:] Alphabetische Zeichen
[:blank:] Leerzeichen und Tabulatoren
[:cntrl:] Steuerzeichen
16 | vi und Vim kurz & gut
Klasse Entsprechende Zeichen
[:digit:] Numerische Zeichen
[:graph:] Druckbare und sichtbare (Nicht-Leer-)Zeichen
[:lower:] Kleinbuchstaben
[:print:] Druckbare Zeichen (einschlielich Whitespace)
[:punct:] Interpunktionszeichen
[:space:] Whitespace-Zeichen
[:upper:] Grobuchstaben
[:xdigit:] Hexadezimalzahlen
Metazeichen in Ersetzungsstrings
\n Wird ersetzt durch den Text, der dem n-ten Muster ent-
spricht, das vorher durch \( und \) gesichert wurde,
wobei n eine Zahl zwischen eins und neun ist. Zuvor gesi-
cherte Muster (die sich in Haltepuffern befinden) werden
von links auf der Zeile gezhlt.
\ Behandelt das folgende Sonderzeichen als normales Zei-
chen. Um einen echten Backslash anzugeben, tippen Sie
zwei hintereinander ein (\\).
& Wird ersetzt durch den gesamten Text, der dem Such-
muster in einem Ersetzungsstring entspricht. Das ist ntz-
lich, wenn man Text nicht noch einmal eintippen mchte.
~ Der gefundene String wird durch den Ersetzungstext
ersetzt, der im letzten Substitute-Befehl angegeben wurde.
Das ist ntzlich, wenn man eine Bearbeitung wiederholen
mchte.
\u oder \l
ndert das nchste Zeichen im Ersetzungsstring in einen
Grobuchstaben bzw. Kleinbuchstaben.
\U oder \L und \e oder \E
\U und \L sind vergleichbar mit \u und \l, aber alle fol-
genden Zeichen werden bis zum Ende des Ersetzungsst-
rings oder bis \e oder \E erreicht werden in Gro- oder
Substitution und regulre Ausdrcke | 17
Kleinbuchstaben konvertiert. Wenn es kein \e oder \E
gibt, werden alle Zeichen des Ersetzungstextes durch \U
oder \L erfasst.
Weitere Substitutionstricks
Sie knnen vi anweisen, die Gro- und Kleinschreibung
zu ignorieren, indem Sie :set ic eintippen.
Ein einfaches :s ist das gleiche wie :s//~/.
:& ist das gleiche wie :s. Sie knnen hinter das & noch ein
g schreiben, um die Substitution global auf der Zeile wirk-
sam werden zu lassen, und es sogar in einem Zeilenbereich
benutzen.
Sie knnen den &-Schlssel als vi-Befehl benutzen, um
den :&-Befehl auszufhren, d.h. um die letzte Substitution
zu wiederholen.
Der :~-Befehl ist vergleichbar mit dem :&-Befehl, aller-
dings mit einem feinen Unterschied: Das verwendete
Suchmuster ist der letzte regulre Ausdruck, der in irgend-
einem Befehl benutzt wurde, nicht unbedingt der aus dem
letzten Substitute-Befehl.
Neben dem /-Zeichen knnen Sie ein beliebiges nichtnal-
phanumerisches, Nicht-Whitespace-Zeichen als Trenner
benutzen. Ausgenommen sind Backslash, doppelte
Anfhrungszeichen und der senkrechte Strich (\, " und |).
Wenn die Option edcompatible aktiviert ist, erinnert sich
vi an die Flags (g fr global und c fr Besttigung), die in
der letzten Substitution benutzt wurden, und wendet sie
auf die nchste an.
ex-Befehle
Dieser Abschnitt fasst die ex-Befehle zusammen , die am Dop-
pelpunkt-Prompt in vi verwendet werden.
18 | vi und Vim kurz & gut
Befehlssyntax
:[Adresse] Befehl [Optionen]
Adresssymbole
Adresse Enthlt
1,$ Alle Zeichen in der Datei
x,y Zeilen x bis y
x;y Zeilen x bis y, wobei die aktuelle Zeile auf
x zurckgesetzt wird
0 Anfang der Datei
. Aktuelle Zeile
n Absolute Zeilennummer n
$ Letzte Zeile
% Alle Zeilen; identisch mit 1,$
x-n n Zeilen vor x
x+n n Zeilen hinter x
-[n] Eine oder n Zeilen vorher
+[n] Eine oder n Zeilen weiter
x Zeile markiert mit x (einfaches Anfhrungs-
zeichen)
Vorherige Marke (zwei einfache Anfh-
rungszeichen)
/Muster/ oder ?Muster? Weiter oder zurck zur Zeile, in der Mus-
ter passt
Befehlsoptionssymbole
Symbol Bedeutung
! Eine Variante des Befehls
Zahl Wiederholt den Befehl Zahl Male
Datei Dateiname: % ist aktuelle Datei, # ist vorhergehende Datei
ex-Befehle | 19
Alphabetische Liste der Befehle
Die folgende Tabelle der ex-Befehle behandelt sowohl Stan-
dard-ex-Befehle als auch ausgewhlte Befehle, die spezifisch
fr Vim sind. Befehle, die in Vim verbessertes vi behandelt
werden, wurden hier weggelassen.
Kompletter Name Befehl Nur Vim
Abbrev ab [Stringtext]
Append [Adresse] a[!]
Text
.

Args ar
Args args Dateien
Bdelete [Zahl] bd[!] [Zahl]
Buffer [Zahl] b[!] [Zahl]
Buffers [Zahl] buffers[!]
Center [Adresse] ce [Breite]
Change [Adresse]c[!]
Text
.

Chdir cd Verzeichnis
Copy [Adresse] co Ziel
Delete [Adresse] d [Puffer]
Edit e [!][+n] [Dateiname]
File f [Dateiname]
Global [Adresse]g[!]/Muster/[Befehle]
Insert [Adresse]i[!]
Text
.

Join [Adresse]j[!][Zahl]
K (mark) [Adresse] k Zeichen
Left [Adresse] le [Zahl]
20 | vi und Vim kurz & gut
Kompletter Name Befehl Nur Vim
List [Adresse] l [Zahl]
Map map Zeichen Befehle
Mark [Adresse] ma Zeichen
Mkexrc mk[!] Datei
Move [Adresse] m Ziel
Next n[!] [[+Befehl] Dateiliste]
Number [Adresse] nu [Zahl]
Open [Adresse] o [/Muster/]
Preserve pre
Previous prev[!]
Print [Adresse] p [Zahl]
[Adresse] P [Zahl]

Put [Adresse] pu [Zeichen]
Quit q[!]
Read [Adresse] r Dateiname
Read [Adresse] r ! Befehl
Recover rec [Dateiname]
Rewind rew[!]
Right [Adresse] ri [Zahl]
Set set
set Option
set noOption
set Option=Wert
set Option?

Shell sh
Source so Dateiname
Stop st
Substitute [Adresse] s [/Muster/Ersetzung/]
[Optionen]

Suspend su
ex-Befehle | 21
Kompletter Name Befehl Nur Vim
T (to) [Adresse]t Ziel
Tag [Adresse] ta Tag
Unabbreviate una Wort
Undo u
Unmap unm Zeichen
V (global exclude) [Adresse] v/Muster/[Befehle]
Version ve
Visual [Adresse] vi [Typ] [Zahl]
Visual vi [+n] [Dateiname]
Write [Adresse] w[!] [[>>]Dateiname]
Write [Adresse] w !Befehl
Wall (write all) wa[!]
Wq (write + quit) wq[!]
Wqall (write all + quit) wqa[!]
Xit x
Yank [Adresse] y [Zeichen] [Zahl]
Z (Position der Zeile) [Adresse] z[Typ] [Zahl]
Typ kann sein:
+ Platziert Zeile am Anfang des Fensters
(Standard)
- Platziert Zeile am Ende des Fensters
. Platziert Zeile in der Mitte des Fensters
^ Gibt das vorhergehende Fenster aus
= Platziert Zeile in der Mitte des Fensters
und lsst die aktuelle Zeile auf dieser
Zeile

! (Ausfhrungsbefehl) [Adresse] !Befehl
@ (Ausfhrungsregister) [Adresse] @ [Zeichen]
= (Zeilennummer) [Adresse] =
22 | vi und Vim kurz & gut
Kompletter Name Befehl Nur Vim
< > (Verschieben) [Adresse] < [Zahl]
[Adresse] > [Zahl]

& (Substitution wieder-
holen)
[Adresse] & [Optionen] [Zahl]
~ [Adresse]~[Zahl]
Wie &, allerdings mit dem zuletzt benutzten
regulren Ausdruck; Details siehe Kapitel 6 von
Learning the vi and Vim Editors

Return (nchste Zeile) ENTER
Address Adresse
Initialisierung
vi fhrt die folgenden Initialisierungsschritte aus:
1. Wenn die EXINIT-Umgebungsvariable existiert, werden
die Befehle ausgefhrt, die in ihr stehen. Mehrere Befehle
werden durch ein Pipe-Symbol (|) getrennt.
2. Wenn EXINIT nicht existiert, nach der Datei
$HOME/.exrc suchen. Falls diese existiert, wird sie gele-
sen und ausgefhrt.
3. Wenn weder EXINIT noch $HOME/.exrc existieren, wird
die Option exrc aktiviert und die Datei ./.exrc gelesen
und ausgefhrt, falls sie existiert.
4. Fhrt Such- oder Goto-Befehle aus, die mit +/Muster
oder +n-Kommandzeilenoptionen angegeben werden
(POSIX: -c Option).
Bei den .exrc- Dateien handelt es sich um einfache Skripten mit
ex-Befehlen; die Befehle in ihnen bentigen keinen vorange-
stellten Doppelpunkt. Kommentare in den Skripten stehen auf
Zeilen, die mit einem doppelten Anfhrungszeichen beginnen
("). Das wird empfohlen.
Initialisierung | 23
Wiederherstellung
Die Befehle ex -r und vi -r listen alle Dateien auf, die man
wiederherstellen kann. Man kann dann den Befehl
$ vi -r Datei
einsetzen, um eine bestimmte Datei wiederherzustellen.
Selbst ohne einen Absturz kann man das System zwingen, den
Puffer aufzubewahren, und zwar mit dem Befehl :pre (preser-
ve).
vi-Einstellungsoptionen
Option Vorgabe
autoindent (ai) noai
autoprint (ap) ap
autowrite (aw) noaw
beautify (bf) nobf
directory (dir) /tmp
edcompatible noedcompatible
errorbells (eb) errorbells
exrc (ex) noexrc
hardtabs (ht) 8
ignorecase (ic) noic
lisp nolisp
list nolist
magic magic
mesg mesg
novice nonovice
number (nu) nonu
open open
24 | vi und Vim kurz & gut
Option Vorgabe
optimize (opt) noopt
paragraphs (para) IPLPPPQP LIpplpipbp
prompt prompt
readonly (ro) noro
redraw (re)
remap remap
report 5
scroll halbes Fenster
sections (sect) SHNHH HU
shell (sh) /bin/sh
shiftwidth (sw) 8
showmatch (sm) nosm
showmode noshowmode
slowopen (slow)
tabstop (ts) 8
taglength (tl) 0
tags tags /usr/lib/tags
tagstack tagstack
term (aus $TERM)
terse noterse
timeout (to) timeout
ttytype (aus $TERM)
warn warn
window (w)
wrapscan (ws) ws
wrapmargin (wm) 0
writeany (wa) nowa
vi-Einstellungsoptionen | 25
Nichts ist wie das Original
Viele Jahre lang war der Quellcode fr den Original-vi nur
verfgbar, wenn man auch eine Unix-Quellcodelizenz hatte.
Diese Tatsache fhrte zur Entwicklung der ganzen vi-Klone,
die in dieser Referenz beschrieben werden.
Im Januar 2002 wurden die Quellen fr die Original-ex und -
vi unter einer Open Source-Lizenz zur Verfgung gestellt.
Dieser Code lsst sich nicht einfach so kompilieren, und eine
Portierung ist schwierig. Glcklicherweise hat sich schon
jemand diese Arbeit gemacht. Wenn Sie den ursprnglichen,
echten vi benutzen wollen, laden Sie den Quellcode herunter
und kompilieren Sie ihn selbst. Mehr Informationen unter http:
//ex-vi.sourceforge.net/.
Verbesserte Tags und Tag-Stacks
Vim und die meisten anderen vi-Klone bieten verbesserte Tag-
ging-Mglichkeiten. Man kann Orte in einem Tag-Stack sta-
peln und mit Exuberant ctags mehr Elemente taggen als nur
Funktionen.
Exuberant ctags
Das Exuberant ctags- Programm wurde von Darren
Hiebert (Website: http://ctags.sourceforge.net/) geschrieben.
Momentan ist die aktuelle Version 5.8.
Dieses erweiterte tags-Dateiformat enthlt drei tabseparierte
Felder: den Tag-Namen (typischerweise ein Identifikator), die
Quelldatei, die den Tag enthlt, und den Ort des Identifikators.
Erweiterte Attribute kommen nach einem trennenden ;". Jedes
Attribut wird vom nchsten durch ein Tabulatorzeichen abge-
trennt und besteht aus zwei durch Doppelpunkte getrennten
Teilfeldern. Das erste Teilfeld ist ein Stichwort, das das Attri-
but beschreibt; das zweite ist der eigentliche Wert.
26 | vi und Vim kurz & gut
Erweiterte ctags-Stichwrter
Stichwort Bedeutung
arity Fr Funktionen
class Fr C++-Member-Funktionen und Variablen
enum Fr Werte in einem enum-Datentyp
file Fr statische Tags, d. h. lokal zur Datei
function Fr lokale Tags
kind Der Wert ist ein einzelner Buchstabe, der den lexikalischen Typ des
Tags anzeigt
scope Hauptschlich gedacht fr C++-Klassenmember-Funktionen
struct Fr Felder in einem struct
Wenn das Feld keinen Doppelpunkt enthlt, wird angenom-
men, dass es vom Typ kind ist.
Innerhalb des Wertteils eines Attributs sollten Backslash-,
Tab-, Carriage Return- und Newline-Zeichen als \\, \t, \r bzw.
\n kodiert werden.
Solaris-vi-Tag-Stacking
vi bietet ex- und vi-Befehle zum Verwalten des Tag-Stacks.
Tag-Befehle ex
Befehl Funktion
ta[g][!] Tagstring Bearbeitet die Datei, die Tagstring enthlt,
wie in der tags-Datei definiert
po[p][!] Nimmt ein Element vom Tag-Stack herun-
ter
Verbesserte Tags und Tag-Stacks | 27
Tag-Befehle vi
Befehl Funktion
^] Sucht nach dem Ort des Identifikators unter
dem Cursor in der tags-Datei und geht an
diesen Ort; wenn Tag-Stacking aktiviert ist,
wird der aktuelle Ort automatisch auf den
Tag-Stack geschoben
^T Kehrt zum vorherigen Ort im Tag-Stack
zurck, nimmt also ein Element herunter
Tag-Verwaltungsoptionen
Option Funktion
taglength, tl Kontrolliert die Anzahl der signifikanten
Zeichen in einem Tag, die nachgeschaut
werden sollen; der Standardwert null zeigt
an, dass alle Zeichen signifikant sind.
tags, tagpath Der Wert ist eine Liste mit Dateinamen, in
denen nach Tags gesucht werden soll;
Standardwert ist "tags /usr/lib/
tags".
tagstack Ist die Option auf true gesetzt, stapelt vi
alle Orte auf den Tag-Stack.
Vim verbessertes vi
Vim ist der leistungsstrkste und beliebteste der vi-Klone, die
derzeit benutzt werden. Es ist auf den meisten GNU/Linux-
Systemen die Standardversion von vi.
Wichtige Kommandozeilenoptionen
-b Startet im Binrmodus.
28 | vi und Vim kurz & gut
-c Befehl
Fhrt beim Start Befehl aus (POSIX-Version des histori-
schen +Befehl).
-C Luft im vi-Kompatibilittsmodus.
-f Fr die GUI-Version: Diese bleibt im Vordergrund.
-g Startet die GUI-Version von Vim, wenn Vim mit GUI-
Untersttzung kompiliert wurde.
-i viminfo
Liest die angegebene viminfo-Datei bei der Initialisierung
anstelle der vorgegebenen viminfo-Datei.
-o [N]
Falls angegeben, werden N Fenster geffnet; ansonsten
wird ein Fenster pro Datei geffnet.
-O [N]
Wie -o, allerdings werden die Fenster vertikal geteilt.
-n Es wird keine Swap-Datei angelegt; eine Wiederherstel-
lung ist nicht mglich.
-p ffnet einen neuen Tab fr jede Datei, die auf der Kom-
mandozeile genannt wird.
-q Dateiname
Behandelt Dateiname als quick fix-Datei.
-R Startet im schreibgeschtzten Modus, wobei die Option
readonly gesetzt wird.
-s Startet den Batch-(Skript-)Modus. Das gilt nur fr ex und
ist dafr gedacht, Bearbeitungsskripten auszufhren
(POSIX-Version des historischen -Arguments).
-u vimrc
Liest die angegebene .vimrc-Datei zur Initialisierung und
berspringt alle anderen normalen Initialisierungsschrit-
te.
Vim verbessertes vi | 29
-U gvimrc
Liest die angegebene .gvimrc-Datei fr die GUI-Initialisie-
rung und berspringt alle anderen normalen GUI-Initial-
isierungsschritte.
-y Startet den easy-Modus, der ein intuitiveres Verhalten
fr Anfnger bietet.
-Z Startet den eingeschrnkten Modus (als htte man ein
fhrendes r im Namen).
Vim-Fensterverwaltung
Vim erlaubt Ihnen, den Bildschirm in mehrere Fenster aufzu-
teilen und deren Gre und Platzierung zu steuern.
Befehle zur Fensterverwaltung ex
Befehl Funktion
clo[se][!] Schliet das aktuelle Fenster; Verhalten
wird von der Option hidden beeinflusst
hid[e] Schliet das aktuelle Fenster, falls es nicht
das letzte Fenster auf dem Bildschirm ist
[N]new [Position] [Datei] Legt ein neues Fenster an, wobei ein leerer
Puffer bearbeitet wird
on[ly] Macht dieses Fenster zum einzigen auf dem
Bildschirm
qa[ll][!] Beendet Vim
q[uit][!] Schliet das aktuelle Fenster (beendet das
Programm, falls im letzten Fenster ange-
geben)
res[ize] [n] Vergrert oder verkleinert die aktuelle
Fensterhhe um n
res[ize] [n] Setzt die aktuelle Fensterhhe auf n, falls
angegeben, ansonsten setzt es sie auf die
grtmgliche Gre, ohne die anderen
Fenster zu verbergen
30 | vi und Vim kurz & gut
Befehl Funktion
[N]sn[ext] Teilt das Fenster und geht zur nchsten
Datei in der Argumentliste oder zur N-ten
Datei weiter, falls eine Zahl angegeben ist
[N]sp[lit] [Position] [Datei] Teilt das aktuelle Fenster in zwei Hlften
sta[g] [Tagname] Teilt das Fenster und fhrt den :tag-
Befehl im neuen Fenster aus
[N]sv[iew] [Position] Datei Identisch mit :split, setzt allerdings die
readonly-Option fr den Puffer
wa[ll][!] Schreibt alle modifizierten Puffer, die
Dateinamen haben
wqa[ll][!] Schreibt alle genderten Puffer und been-
det das Programm
xa[ll][!] Identisch mit wqall
Befehle zur Fensterverwaltung vi
Befehl Funktion
^W s
^W S
^W ^S
Identisch mit :split ohne Datei-Argu-
ment; ^W ^S funktioniert mglicherweise
nicht auf allen Terminals.
^W n
^W ^N
Identisch mit :new ohne Datei-Argument.
^W ^
^W ^^
Fhrt :split # aus, teilt das Fenster und
bearbeitet die alternative Datei.
^W q
^W ^Q
Identisch mit dem :quit-Befehl; ^W
^Q funktioniert mglicherweise nicht auf
allen Terminals.
^W c Identisch mit dem :close-Befehl.
^W o
^W ^O
Identisch mit dem :only-Befehl.
^W
^W j
^W ^J
Verschiebt den Cursor zum n-ten Fenster
unter dem aktuellen.
Vim verbessertes vi | 31
Befehl Funktion
^W
^W k
^W ^K
Verschiebt den Cursor zum n-ten Fenster
ber dem aktuellen.
^W w
^W ^W
Mit Zahl geh zum n-ten Fenster; ansonsten
geh zum Fenster unter dem aktuellen. Ist
man im untersten Fenster, geh zum ober-
sten.
^W W Mit Zahl geh zum n-ten Fenster; ansonsten
geh zum Fenster ber dem aktuellen. Ist
man im obersten Fenster, geh zum unters-
ten.
^W t
^W ^T
Verschiebt den Cursor zum obersten Fens-
ter.
^W b
^W ^B
Verschiebt den Cursor zum untersten Fens-
ter.
^W p
^W ^P
Geht zum (vorherigen) Fenster, auf das
zuletzt zugegriffen wurde.
^W r
^W ^R
Rotiert alle Fenster nach unten; der Cursor
bleibt im selben Fenster.
^W R Rotiert alle Fenster nach oben; der Cursor
bleibt im selben Fenster.
^W x
^W ^X
Ohne Zahl tausche das aktuelle Fenster
gegen das nchste aus; wenn es kein nchs-
tes Fenster gibt, vertausche es mit dem
vorhergehenden. Mit Zahl tausche das
aktuelle Fenster gegen das n-te Fenster aus
(erstes Fenster ist eins, der Cursor wird in
das andere Fenster gesetzt).
^W = Stellt fr alle Fenster die gleiche Hhe ein.
^W - Verringert die aktuelle Fensterhhe.
^W + Vergrert die aktuelle Fensterhhe.
^W _
^W ^_
Setzt die aktuelle Fenstergre auf den
Wert, der in einer vorangegangenen Zahl
angegeben wurde.
32 | vi und Vim kurz & gut
Befehl Funktion
z N ENTER Setzt die aktuelle Fensterhhe auf N.
^W ]
^W ^]
Teilt das aktuelle Fenster; im neuen oberen
Fenster wird der Identifikator unter dem
Cursor als Tag benutzt und zu ihm gegan-
gen.
^W f
^W ^F
Teilt das aktuelle Fenster und bearbeitet
den Dateinamen unter dem Cursor im neu-
en Fenster.
^W i
^W ^I
ffnet ein neues Fenster; verschiebt den
Cursor auf die erste Zeile, die dem Stichwort
unter dem Cursor entspricht.
^W d
^W ^D
ffnet ein neues Fenster; verschiebt den
Cursor auf die Makrodefinition, die das
Stichwort unter dem Cursor enthlt.
Bearbeitung mit Tabs
hnlich wie moderne Webbrowser erlaubt Ihnen Vim, meh-
rere Tabs anzulegen und zu verwalten. Innerhalb jedes Tabs
kann es mehrere Fenster geben. Man kann zwischen den Tabs
wechseln. Auf diese Weise ist es einfach, mehrere voneinander
unabhngige Bearbeitungen durchzufhren, ohne den Bild-
schirm zu verstopfen. Tabs werden sowohl in der zeichenori-
entierten als auch in der GUI-Version von Vim untersttzt.
Tabs verwalten ex
Tabs werden von eins an durchnummeriert.
Befehl Funktion
[Zahl] tab Befehl Fhrt Befehl aus, aber ffnet dafr einen
neuen Tab, wenn ansonsten ein neues
Fenster geffnet wrde; z. B. benutzt :tab
split, um den aktuellen Puffer in einen
neuen Tab aufzuteilen.
tabc[lose][!] [Zahl] Schliet die aktuelle Tabseite. Mit Zahl wird
die Seite geschlossen, die in Zahl angege-
Vim verbessertes vi | 33
Befehl Funktion
ben ist. Benutzen Sie !, um das Schlieen
zu erzwingen, selbst wenn der Dateiinhalt
nicht gesichert wurde (der Inhalt der Puffer
geht nicht verloren).
tabdo Befehl Fhrt fr jeden Tab Befehl aus.
tabe[dit] [Option] [Befehl]
[Datei]
ffnet eine neue Seite mit einem Fenster,
in dem Datei bearbeitet wird. Ohne Argu-
mente wird eine leere Seite geffnet.
tabf[ind] [Option] [Befehl] Datei ffnet eine neue Seite und sucht nach
Datei im Wert der path-Option,
wie :find.
tabf[irst] Geht zum ersten Tab.
tabl[ast] Geht zum letzten Tab.
tabm[ove] [N] Verschiebt die aktuelle Tabseite hinter Tab-
seite N (ndert die Anordnung der Tabsei-
ten selbst, nicht den Tab, in dem Sie gerade
arbeiten). Ohne Argument wird der aktu-
elle Tab zum letzten Tab.
tabnew [Option] [Befehl] [Datei] Identisch mit :tabedit.
tabn[ext] [Zahl] Geht zum nchsten Tab oder zum Tab Zahl.
tabN[ext] [Zahl] Identisch mit :tabprevious.
tabo[nly][!] Schliet alle anderen Tab-Seiten.
tabp[revious] [Zahl] Geht zum vorherigen Tab oder geht Zahl
Tabs zurck. Das geht im Kreis.
tabr[ewind] Geht zum ersten Tab (identisch mit :tab-
first).
Tabs verwalten vi
Die Steuersequenzen funktionieren sowohl im Befehlsmodus
als auch im Einfgemodus.
Befehl Funktion
gt
STRG Bild runter
Identisch mit :tabnext
34 | vi und Vim kurz & gut
Befehl Funktion
gT
STRG Bild hoch
Identisch mit :tabprevious
^W gf Bearbeitet den Dateinamen unter dem Cur-
sor in einer neuen Tabseite
^W gF Bearbeitet den Dateinamen unter dem Cur-
sor in einer neuen Tabseite, beginnend bei
der Zeilennummer, die dem Dateinamen
folgt
Tab-Bearbeitungsoptionen
Option Standard
t:cmdheight (t:ch) (pro Tab-Seite) 1
guitablabel (gtl)
guitabtooltip (gtt)
showtabline (stal) 1
tabline (tal)
tabpagemax (tpm) 10
Erweiterte regulre Ausdrcke in Vim
\| Kennzeichnet Alternatieren.
\+ Entspricht einem oder mehreren der vorangegangenen
regulren Ausdrcke.
\= Entspricht keinem oder einem der vorangegangenen regu-
lren Ausdrcke.
\{...}
Definiert einen Intervallausdruck. Intervallausdrcke
beschreiben bestimmte Anzahlen von Wiederholungen.
In der folgenden Beschreibung reprsentieren n und m
Integer-Konstanten:
\{n} Entspricht exakt n Wiederholungen des
vorangegangenen regulren Ausdrucks.
Vim verbessertes vi | 35
\{n,} Entspricht n oder mehr Wiederholungen des
vorangegangenen regulren Ausdrucks, und
zwar so vielen wie mglich.
\{n,m} Entspricht n bis m Wiederholungen.
Fr Vim knnen sich n und m im Bereich von 0 bis 32.000
bewegen. Vim verlangt den Backslash nur bei { und nicht
bei }. Vim erweitert die traditionellen Intervallausdrcke
mit zustzlichen passenden Notationen:
\{,m} Entspricht 0 bis m der vorangegangenen regu-
lren Ausdrcke, und zwar so vielen wie mg-
lich.
\{} Entspricht 0 oder mehr der vorangegangenen
regulren Ausdrcke, und zwar so vielen wie
mglich (identisch mit *).
\{-n,m} Entspricht n bis m der vorangegangenen regu-
lren Ausdrcke, und zwar so wenigen wie
mglich.
\{-n} Entspricht n der vorangegangenen regulren
Ausdrcke.
\{-n,} Entspricht wenigstens n der vorangegangenen
regulren Ausdrcke, und zwar so wenigen
wie mglich.
\{-,m} Entspricht 0 bis m der vorangegangenen regu-
lren Ausdrcke, und zwar so wenigen wie
mglich.
\i Entspricht einem Identifikatorzeichen, wie es durch die
isident-Option definiert ist.
\I Wie \i, ausgenommen Ziffern.
\k Entspricht einem Stichwortzeichen, wie definiert durch
die iskeyword-Option.
\K Wie \k, ohne Ziffern.
\f Entspricht einem Dateinamenzeichen, wie definiert durch
die isfname-Option.
\F Wie \f, ausgenommen Ziffern.
36 | vi und Vim kurz & gut
\p Entspricht einem druckbaren Zeichen, wie definiert durch
die isprint-Option.
\P Wie \p, ausgenommen Ziffern.
\s Entspricht einem Whitespace-Zeichen (exakt einem Leer-
zeichen oder Tab).
\S Entspricht allem, was kein Leerzeichen oder Tab ist.
\b Backspace.
\e Escape.
\r Carriage Return.
\t Tab.
\n Entspricht dem Zeilenende.
~ Entspricht dem zuletzt angegebenen Substitute-String
(also Ersetzungsstring).
\(...\)
Erlaubt eine Gruppierung fr *, \+ und \= und macht pas-
sende Subtexte im Ersetzungsteil eines Substitute-Befehls
verfgbar (\1, \2 usw.).
\1 Entspricht dem String, der durch den ersten Teilausdruck
in \( und \) erfasst wurde. \2, \3 usw. knnen verwendet
werden, um die zweiten, dritten usw. Teilausdrcke zu
reprsentieren.
Die Optionen isident, iskeyword, isfname und isprint defi-
nieren die Zeichen, die in den Identifikatoren, Stichwrtern
und Dateinamen auftauchen bzw. die druckbar sind.
Kommandozeilen-History und -Vervollstndigung
Vim fhrt ein Protokoll, eine sogenannte History, ber die ex-
Befehle, die Sie aufgerufen haben. Sie knnen Befehle aus die-
ser History erneut aufrufen und bearbeiten sowie die Vervoll-
stndigungsfunktionen verwenden, um sich Arbeit beim Tip-
pen zu sparen.
Vim verbessertes vi | 37
History-Befehle vi
Taste Bedeutung
, Nach oben (frhere), nach unten (neuere)
in der History bewegen
, Nach links, rechts auf der wieder aufgeru-
fenen Zeile bewegen
INS Einfge-/berschreibmodus ein- und aus-
schalten; Vorgabe ist Einfgemodus
BACKSPACE Zeichen lschen
SHIFT oder STRG kombiniert mit oder

Ein Wort nach links oder rechts bewegen


^B oder HOME An den Anfang der Kommandozeile gehen
^E oder END An das Ende der Kommandozeile gehen
Wenn Vim im vi-Kompatibilittsmodus ist, agiert ESC wie
ENTER und fhrt den Befehl aus. Ist der vi-Kompatibilitts-
modus ausgeschaltet, verlsst ESC die Kommandozeile, ohne
etwas auszufhren.
Die Option wildchar enthlt das Zeichen, das Sie tippen, wenn
Sie mchten, dass Vim einen Befehl vervollstndigt. Vorgege-
ben ist das Tabzeichen. Sie knnen die Vervollstndigung fr
Folgendes benutzen:
Befehlsnamen
Verfgbar am Anfang der Kommandozeile.
Tagwerte
Nachdem Sie :tag getippt haben.
Dateinamen
Wenn Sie einen Befehl eingeben, der ein Dateinamenar-
gument entgegennimmt (siehe :help suffixes fr
Details).
Optionswerte
Wenn Sie einen :set-Befehl eingeben, sowohl fr Opti-
onsnamen als auch fr deren Werte.
38 | vi und Vim kurz & gut
Vervollstndigungsbefehle vi
Befehl Funktion
^A Fgt alle Namen ein, die dem Muster entsprechen.
^D Listet die Namen auf, die dem Muster entsprechen; fr Dateinamen
werden die Verzeichnisse hervorgehoben.
^L Wenn es genau einen Treffer gibt, wird dieser eingefgt; bei meh-
reren Treffern wird auf das lngste gemeinsame Prfix erweitert.
^N Geht zum nchsten von mehreren wildchar-Treffern, falls es wel-
che gibt, ansonsten wird eine neuere History-Zeile aufgerufen.
^P Geht zum vorigen von mehreren wildchar-Treffern, falls es welche
gibt, ansonsten wird eine ltere History-Zeile aufgerufen.
Wert von wild-
char
(Vorgabe: tab) Fhrt einen Vergleich aus, setzt den generierten Text
ein; beim Drcken von TAB werden sukzessive alle Treffer durch-
laufen.
Tag-Stacks
Vim bietet ex- und vi-Befehle zum Verwalten des Tag-Stacks.
Tag-Befehle ex
Befehl Funktion
[Zahl]po[p][!] Nimmt eine Cursorposition vom Stack, bringt damit den
Cursor an seine vorherige Position
sts[elect][!] [Tagst-
ring]
Wie tselect, teilt aber das Fenster fr den ausge-
whlten Tag
ta[g][!] [Tagstring] Bearbeitet die Datei, die Tagstring enthlt, wie in der
tags-Datei definiert
[N]ta[g][!] Springt an den N-ten neueren Eintrag im Tag-Stack
tags Zeigt den Inhalt des Tag-Stacks an
tl[ast][!] Springt an den letzten passenden Tag
[N]tn[ext][!] Springt an den N-ten nchsten passenden Tag (Vorgabe
eins)
[N]tN[ext][!] Identisch mit tprevious
Vim verbessertes vi | 39
Befehl Funktion
[N]tp[revious][!] Springt an den N-ten vorangegangenen passenden Tag
(Vorgabe eins)
[N]tr[ewind][!] Springt an den ersten passenden Tag; mit N wird an den
N-ten passenden Tag gesprungen
ts[elect][!] [Tagst-
ring]
Listet die Tags auf, die Tagstring entsprechen, verwendet
dabei die Informationen in der/den tags-Datei/en
Tag-Befehle vi
Befehl Funktion
^]
g <LeftMouse>
STRG-<LeftMouse>
Sucht nach dem Ort des Identifikators unter
dem Cursor in der tags-Datei und geht an
diesen Ort; der aktuelle Ort wird automa-
tisch auf den Tag-Stack geschoben.
^T Kehrt an den vorherigen Ort im Tag-Stack
zurck, nimmt also ein Element herunter.
Beschleunigung des Bearbeitens und Kompilierens
Vim bietet mehrere Befehle zur Erhhung der Produktivitt
des Programmierers.
Befehle zur Programmentwicklung ex
Befehl Funktion
cc[!] [n] Gibt Fehler n aus, falls angegeben; ansons-
ten wird der aktuelle Fehler noch einmal
angezeigt.
cf[ile][!] [Fehlerdatei] Liest die Fehlerdatei und springt zum ers-
ten Fehler.
clast[!] [n] Zeigt Fehler n an, falls angegeben, ansons-
ten wird der letzte Fehler angezeigt.
cl[ist][!] Listet die Fehler auf, die einen Dateinamen
enthalten.
40 | vi und Vim kurz & gut
Befehl Funktion
[N]cn[ext][!] Zeigt den N-ten Fehler an, der einen Datei-
namen enthlt.
[N]cp[previous][!] Zeigt den N-ten vorherigen Fehler an, der
einen Dateinamen enthlt.
crewind[!] [n] Zeigt Fehler n an, falls angegeben.
cq[uit] Beendet mit einem Fehlercode, damit der
Compiler dieselbe Datei nicht noch einmal
kompiliert; vor allem fr den Amiga-Com-
piler gedacht.
mak[e] [Argumente] Fhrt make basierend auf den Einstellun-
gen verschiedener Optionen aus, die in der
nchsten Tabelle beschrieben werden, und
geht dann zum Ort des ersten Fehlers.
Optionen zur Programmentwicklung
Option Wert Funktion
errorformat %f:%l:\ %m Eine Beschreibung, wie Fehlermeldungen
vom Compiler aussehen; dieser Beispielwert
ist fr gcc, den C-Compiler der GNU Compiler
Collection.
makeef /tmp/vim##.err Der Name einer Datei, die die Compiler-Aus-
gabe enthlt; die ## sorgen dafr, dass Vim
eindeutige Dateinamen erzeugt.
makeprg make Das Programm, das die Neukompilierung erle-
digt.
shell /bin/sh Die Shell zum Ausfhren des Befehls zum Neu-
kompilieren des Programms.
shellpipe 2>&1| tee Was auch immer bentigt wird, um die Shell
zu veranlassen, sowohl die Standardausgabe
als auch die Standardfehlerausgabe von der
Kompilierung in der Fehlerdatei zu sichern.
Vim verbessertes vi | 41
Programmierhilfe
Vim bietet mehrere Mechanismen zum Suchen von interes-
santen Identifikatoren.
Befehle zur Identifikatorsuche ex
Befehl Funktion
che[ckpath][!] Listet alle einbezogenen Dateien auf, die
nicht gefunden werden konnten; mit !
werden alle einbezogenen Dateien aufge-
listet.
[Bereich]dj[ump][!] [Zahl] [/]Mus-
ter[/]
Wie [ ^D und ] ^D, sucht aber in
Bereich Zeilen; Vorgabe ist die ganze Datei.
[Bereich]dl[ist][!]
[/]Muster[/]
Wie [D und ]D, sucht aber in Bereich Zeilen;
Vorgabe ist die ganze Datei.
[Bereich]ds[earch][!] [Zahl]
[/]Muster[/]
Wie [d und ]d, sucht aber in Bereich Zeilen;
Vorgabe ist die ganze Datei.
[Bereich]dsp[lit][!] [Zahl]
[/]Muster[/]
Wie ^W d und ^W ^D, sucht aber in
Bereich Zeilen; Vorgabe ist die ganze Datei.
[Bereich]ij[ump][!] [Zahl] [/]Mus-
ter[/]
Wie [ ^I und ] ^I, sucht aber in
Bereich Zeilen; Vorgabe ist die ganze Datei.
[Bereich]il[ist][!]
[/]Muster[/]
Wie [I und ]I, sucht aber in Bereich Zeilen;
Vorgabe ist die ganze Datei.
[Bereich]is[earch][!] [Zahl]
[/]Muster[/]
Wie [i und ]i, sucht aber in Bereich Zeilen
(Vorgabe ist die ganze Datei). Ohne die
Schrgstriche wird eine Wortsuche durch-
gefhrt; mit Schrgstrichen erfolgt eine
Suche nach regulren Ausdrcken.
[Bereich]isp[lit][!] [Zahl]
[/]Muster[/]
Wie ^W i und ^W ^I, sucht aber in
Bereich Zeilen; Vorgabe ist die ganze Datei.
42 | vi und Vim kurz & gut
Befehle zur Identifikatorsuche vi
Befehl Funktion
[d Zeigt die erste Makrodefinition fr den
Identifikator unter dem Cursor an.
]d Zeigt die erste Makrodefinition fr den
Identifikator unter dem Cursor an, startet
die Suche aber an der aktuellen Position.
[D Zeigt alle Makrodefinitionen fr den Iden-
tifikator unter dem Cursor an; Dateinamen
und Zeilennummern werden angezeigt.
]D Zeigt alle Makrodefinitionen fr den Iden-
tifikator unter dem Cursor an, beginnt die
Suche aber an der aktuellen Position.
[ ^D Springt an die erste Makrodefinition fr den
Identifikator unter dem Cursor.
] ^D Springt an die erste Makrodefinition fr den
Identifikator unter dem Cursor, beginnt die
Suche aber an der aktuellen Position.
^W d
^W ^D
ffnet ein neues Fenster, das den Ort der
ersten Makrodefinition des Identifikators
unter dem Cursor zeigt; bei vorangesteller
Zahl wird das entsprechende Vorkommen
des Makros gesucht.
[i Zeigt die erste Zeile an, die das Stichwort
unter dem Cursor enthlt.
]i Zeigt die erste Zeile an, die das Stichwort
unter dem Cursor enthlt, startet aber die
Suche an der aktuellen Position in der Datei;
dieser Befehl ist am effektivsten, wenn man
eine Zahl mit angibt.
[I Zeigt alle Zeilen an, die das Stichwort unter
dem Cursor enthalten; Dateinamen und
Zeilennummern werden mit ausgegeben.
]I Zeigt alle Zeilen an, die das Stichwort unter
dem Cursor enthalten, startet aber an der
aktuellen Position in der Datei.
Vim verbessertes vi | 43
Befehl Funktion
[ ^I Springt zum ersten Auftreten des Stich-
worts unter dem Cursor.
] ^I Springt zum ersten Auftreten des Stich-
worts unter dem Cursor, startet aber die
Suche an der aktuellen Position.
^W i
^W ^I
ffnet ein neues Fenster, das den Ort des
Vorkommens des Identifikators unter dem
Cursor zeigt; mit einer vorausgehenden
Zahl wird zum angegebenen Vorkommen
gegangen.
Erweiterte Filterbefehle vi
Geben Sie vor diesen Befehlen eine Zahl an, um mehr als eine
Instanz des gewnschten Suchtextes vor- oder zurckzugehen.
Befehl Funktion
% Erweitert, um den /*- und */-C-Kom-
mentaren sowie den C-Prprozessor-
Bedingungen zu entsprechen (#if,
#endif usw.)
[( Geht zur N-ten vorherigen ungefilterten (
[) Geht zur N-ten nchsten ungefilterten )
[{ Geht zur N-ten vorherigen ungefilterten {
[} Geht zur N-ten nchsten ungefilterten }
[# Geht zum N-ten vorherigen ungefilterten
#if oder #else
]# Geht zum N-ten nchsten ungefilterten
#else oder #endif
[*, [/ Geht zum N-ten vorherigen ungefilterten
Anfang eines C-Kommentars, /*
]*, ]/ Geht zum N-ten nchsten ungefilterten
Ende eines C-Kommentars, */
44 | vi und Vim kurz & gut
Optionen fr Einrckung und Formatierung
Option Funktion
autoindent Einfache Einrckung, verwendet die der vorherigen Zeile
smartindent Vergleichbar mit autoindent, kommt allerdings besser mit C-
Syntax zurecht; verworfen zugunsten von cindent
cindent Aktiviert das automatische Einrcken fr C-Programme und ist relativ
schlau; die C-Formatierung wird von den restlichen hier aufgefhrten
Optionen beeinflusst
cinkeys Eingabetasten, die die Einrckungsoptionen auslsen
cinoptions Optionen, die Ihren bevorzugten Einrckungsstil zurechtschneidern
cinwords Stichwrter, die eine zustzliche Einrckung auf der folgenden Zeile
starten
formatopti-
ons
Eine Reihe von einbuchstabigen Flags, die verschiedene Verhaltens-
weisen steuern (vor allem, wie Kommentare beim Eintippen forma-
tiert werden)
comments Beschreibt verschiedene Formatierungsoptionen fr unterschiedli-
che Arten von Kommentaren, sowohl solche, die mit Trennern anfan-
gen und aufhren (wie in C), als auch solche, die mit einem einzelnen
Symbol starten und bis zum Zeilenende gehen, wie in einem Make-
file oder einem Shell-Programm
Text falten und entfalten
Das Falten wird mit der Option foldenable aktiviert. Es gibt
sechs Faltungsmethoden, die durch die Option foldmethod
kontrolliert werden:
diff
Faltungen werden fr nicht genderten Text verwendet.
expr
Faltungen werden durch einen regulren Ausdruck defi-
niert.
indent
Faltungen werden durch die Einrckung des Textes, der
gefaltet wird, und den Wert von shiftwidth definiert.
Vim verbessertes vi | 45
manual
Faltungen werden mithilfe normaler Vim-Befehle defi-
niert (etwa der Such- und Bewegungsbefehle).
marker
Faltungen werden durch vordefinierte Marker (die Sie
ndern knnen) im Text definiert.
syntax
Faltungen werden durch die Syntax der Sprache definiert,
die bearbeitet wird.
Faltungsbefehle ex
Befehl Funktion
Bereich fo[ld] Erzeugt eine Faltung fr die Zeilen in
Bereich.
Bereich foldc[lose][!] Schliet Faltungen in Bereich. Mit ! werden
alle Faltungen geschlossen, ansonsten nur
eine Faltung.
[Bereich] folddoc[losed] Befehl (Faltungen sind geschlossen.) Vergleich-
bar mit dem Befehl g (global); markiert
alle Zeilen, die in einer geschlossenen Fal-
tung sind, und fhrt Befehl auf ihnen aus.
[Bereich] foldd[oopen] Befehl (Faltungen sind offen.) Vergleichbar mit
dem Befehl g (global); markiert alle Zei-
len, die nicht in einer geschlossenen Fal-
tung sind und fhrt Befehl auf ihnen aus.
Bereich foldo[pen][!] ffnet Faltungen in Bereich. Mit ! werden
alle Faltungen geffnet, ansonsten nur
eine.
Faltungsbefehle vi
Faltungsbefehle beginnen mit z, da es ein bisschen aussieht wie
ein gefaltetes Blatt Papier, wenn man es von der Seite betrach-
tet.
46 | vi und Vim kurz & gut
Befehl Funktion
za Schaltet das Falten ein/aus. Bei einer offe-
nen Faltung werden eine oder Zahl Faltun-
gen geschlossen. Bei einer geschlossenen
Faltung werden Faltungen geffnet und
foldenable gesetzt.
zA Wie za, ffnet oder schliet Faltungen aber
rekursiv.
zc Schliet eine oder Zahl Faltungen unter
dem Cursor.
zC Schliet alle Faltungen unter dem Cursor.
zd Lscht die Faltung unter dem Cursor.
Geschachtelte Faltungen werden eine Ebe-
ne nach oben verschoben. Achtung! Das
kann mehr lschen, als Sie erwarten, und
es gibt kein Widerrufen.
zD Lscht Faltungen rekursiv, beginnend
unter dem Cursor.
zE Eliminiert alle Faltungen im Fenster.
zf Bewegung Erzeugt eine Faltung.
zF Erzeugt eine Faltung fr Zahl Zeilen (wie
zf).
zi Schaltet den Wert von foldenable ein/
aus.
zj Geht nach unten an den Anfang der nchs-
ten Faltung oder Zahl Faltungen nach
unten.
zk Geht an den Anfang der vorhergehenden
Faltung oder Zahl Faltungen nach oben.
zm Faltet mehr, indem es eins von foldle-
vel abzieht, falls das grer als null ist;
setzt foldenable.
zM Schliet alle Faltungen, setzt foldle-
vel auf null und setzt foldenable.
Vim verbessertes vi | 47
Befehl Funktion
zn Faltung keine: Setzt foldenable
zurck und ffnet alle Faltungen.
zN Faltung normal: Setzt foldenable
und bringt alle Faltungen in ihre frheren
Zustnde zurck.
zo ffnet eine oder Zahl Faltungen.
zO ffnet alle Faltungen unter dem Cursor.
zr Reduziert das Falten. Addiert eins zu
foldlevel.
zR ffnet alle Faltungen und setzt foldle-
vel auf die hchste Faltungsebene.
zv ffnet gengend Faltungen, um die Zeile
mit dem Cursor sichtbar zu machen.
zx Aktualisiert die Faltungen, indem manuell
geffnete und geschlossene Faltungen
rckgngig gemacht werden, foldle-
vel erneut angewandt und zv ausgefhrt
wird.
zX Widerruft manuell geffnete und
geschlossene Faltungen, wendet dann
foldlevel wieder an.
[z Geht an den Anfang der momentan ge-
ffneten Faltung. Falls der Cursor bereits
dort ist, geht er an den Anfang der ber-
geordneten Faltung, falls vorhanden;
ansonsten schlgt es fehl. Mit Zahl wird die
Aktion entsprechend oft wiederholt.
]z Wie [z, geht aber an das Ende der Faltung
oder das Ende der bergeordneten Faltung.
Faltungsoptionen
Option Vorgabe
foldclose (fcl) 0
48 | vi und Vim kurz & gut
Option Vorgabe
foldcolumn (fdc) 0
foldenable (fen) foldenable
foldexpr (fde) 0
foldignore (fdi) #
foldlevel (fdl) 0
foldlevelstart (fdls) 1
foldmarker (fmr) {{{,}}}
foldmethod (fdm) manual
foldminlines (fml) 1
foldnestmax (fdn) 20
foldopen (fdo) block,hor,mark,per-
cent,quickfix,search,tag,undo
foldtext (fd) foldtext()
Mglichkeiten zum Einfgen und Vervollstndigen
Vim bietet Vervollstndigungsmglichkeiten: Wenn Sie einen
Teil des kompletten Texts eingeben, prsentiert Vim Ihnen
eine Liste mit Vorschlgen, die auf den von Ihnen benutzten
Befehlen und dem Inhalt der aktuellen Dateien beruht.
Die Vervollstndigungsbefehle (ausgenommen zur Vervoll-
stndigung mit der complete-Option) sind Kombinationen aus
zwei Tasten, die mit STRG-X beginnen. Die meisten zweiten
Tastendrcke sind nicht an Aktionen im Einfgemodus gebun-
den, so dass es oft sinnvoll ist, die zweite Taste der Original-
kombination zuzuordnen, wie etwa :inoremap ^F ^X^F.
Die Vervollstndigungsbefehle prsentieren Ihnen eine Liste
von Auswahlmglichkeiten, die Sie mit STRG-N und STRG-
P durchlaufen knnen (nchste/vorherige Mglichkeit). Mit
STRG-E beenden Sie die Vervollstndigung, ohne eine Wahl
zu treffen, mit STRG-Y oder ENTER whlen Sie das aktuelle
Angebot aus und fgen es ein.
Vim verbessertes vi | 49
Die Vervollstndigungsmglichkeiten sind nicht einfach, bie-
ten aber Leistungsfhigkeit und ermglichen eine deutliche
Zeitersparnis bei langen Bearbeitungssitzungen. Es lohnt sich,
die Zeit zu investieren und sie zu erlernen. Details finden Sie
in Kapitel 14 von Learning the vi and Vim Editors.
Vervollstndigungsbefehle vi
Die Reihenfolge hier ist alphabetisch nach Tastenkrzel.
Befehle, die mit markiert sind, erlauben die Verwendung
eines zweiten Zeichens, um zum nchsten Kandidaten zu
gehen, zusammen mit dem normalen STRG-N.
Vervollstndigung mit der Option complete ist die flexibelste
Methode, die sich auch am besten anpassen lsst.
Befehl Vervollstndigen Beschreibung
^N
^P
Mithilfe von complete Vervollstndigung bei Vor-
wrts- (^N) oder Rck-
wrtssuche (^P), basierend
auf der kommaseparierten
Liste der Vervollstndi-
gungsquellen in der
complete-Option. Die
nchste Tabelle listet die
mglichen Quellen auf. Mit
^X ^N oder ^X ^P kopie-
ren Sie zustzliche Wrter
aus der Originalquelle.
^X ^D Makronamen Durchsucht die aktuellen
und die eingeschlossenen
Dateien nach Makros (defi-
niert mit #define), die
dem Text unter dem Cursor
entsprechen. Wiederholen
des Befehls nach einer Ein-
fgung kopiert zustzliche
Wrter aus der Original-
quelle.
50 | vi und Vim kurz & gut
Befehl Vervollstndigen Beschreibung
^X ^F Dateiname Sucht nach Dateinamen
(nicht Inhalten), die dem
Wort unter dem Cursor ent-
sprechen. Die Option
path wird hier nicht
benutzt.
^X ^I Stichwort in Datei und ein-
geschlossenen Dateien
hnlich wie die Stichwort-
vervollstndigung (^X
^N), durchsucht aber auch
eingeschlossene Dateien,
wie in der Option inc-
lude angegeben; Vorgabe
ist ein Muster, das #inc-
lude-Direktiven in C und C
++ entspricht. Die path-
Option agiert als Suchpfad,
um neben den Standard-
Orten auch eingeschlosse-
ne Dateien zu finden.
Eine Wiederholung des Befehls nach einer Einfgung kopiert zustzliche Wrter aus der Originalquelle
.
^X ^K Dictionary Durchsucht die Dateien in
der kommaseparierten Lis-
te, die dem Wert der Option
dictionary entspricht,
nach einem passenden
Wort.
^X ^L Ganze Zeile Sucht rckwrts in der Datei
nach einer Zeile, die dem
entspricht, was Sie bisher
eingetippt haben. Tippen
von ^X ^L nach dem Ein-
fgen einer passenden Zei-
le erlaubt es Ihnen, eine der
Zeilen neben der Original-
zeile auszuwhlen, die ein-
gefgt wurde.
Vim verbessertes vi | 51
Befehl Vervollstndigen Beschreibung
^X ^N
^X ^P
Stichwort in Datei Sucht vorwrts (^X ^N)
oder rckwrts (^X ^P)
nach einem Stichwort,
das dem entspricht, was Sie
bisher eingetippt haben.
Stichwrter sind zusam-
menhngende
Folgen der Zeichen, die in der
iskeyword-Option auf-
tauchen.
Eine Wiederholung des Befehls nach einem Einfgen kopiert zustzliche Wrter aus der Originalquelle
.
^X ^O Omni Ruft die Vim-Funktion auf,
die in der omnifunc-Opti-
on genannt wird, um zu
vervollstndigen. Diese
Funktion soll dateitypspe-
zifisch sein (JavaScript,
HTML, C++ usw.) und wird
geladen, wenn die Datei
geladen wird.
^X ^S
^X s
Schreibweise Bietet mgliche Berichti-
gungen fr das Wort unter
dem Cursor. Rechtschreib-
korrektur muss mit der
Option spell aktiviert
werden.
^X ^T Thesaurus hnlich wie die Dictionary-
Vervollstndigung; durch-
sucht Dateien in der the-
saurus-Option und bietet
eine Vervollstndigung aus
allen passenden Zeilen.
Hier werden alle Wrter auf
einer Zeile mit einem Tref-
fer als Vervollstndigungs-
optionen gezeigt, nicht nur
das erste Wort auf einer Zei-
52 | vi und Vim kurz & gut
Befehl Vervollstndigen Beschreibung
le. Ebenso werden alle Zei-
len mit einem mglichen
Treffer gezeigt.
^X ^U Benutzerfunktion Ruft die Vim-Funktion auf,
die von der complete-
func-Option genannt
wird, um die Vervollstndi-
gung durchzufhren.
^X ^V ex Kommandozeile Bietet Vervollstndigung
fr Vim-Befehle, um die
Vim-Skriptentwicklung zu
vereinfachen. Wiederholen
des Befehls sorgt fr zustz-
liche Vervollstndigung.
^X ^] Tag Sucht vorwrts in der aktu-
ellen und den eingeschlos-
senen Dateien nach dem
ersten Tag, der dem Wort
unter dem Cursor ent-
spricht. Ist showfull-
tag gesetzt, zeigt Vim
den Tag und das benutzte Suchmuster an
.
Die nchste Tabelle beschreibt die mglichen Quellen fr die
Vervollstndigung mit der Option complete. Quellen sind
alphabetisch aufgefhrt. Der Vorgabewert fr complete ist
".,w,b,u,t,i".
Name Beschreibung
. (Punkt) Der aktuelle Puffer
b Andere Puffer, selbst solche, die nicht in
einem Fenster geladen (sichtbar) sind
d Die aktuelle und eingeschlossene Dateien;
sucht nach Makrodefinitionen.
i Die aktuelle und eingeschlossene Dateien
Vim verbessertes vi | 53
Name Beschreibung
k Die Dictionary-Dateien, die in der Option
dictionary aufgefhrt sind.
kDatei Durchsucht Datei nach Dictionary-Zeilen,
die passen. Kann mehrfach angegeben
werden, z. B. k~/french. Ein Muster
kann benutzt werden.
kspell Nutzt das aktuelle Rechtschreibkorrektur-
schema.
s Die Thesaurus-Dateien, die in der Option
thesaurus aufgefhrt sind.
sDatei Durchsucht Datei nach Thesaurus-Zeilen.
Kann mehrfach angegeben werden, z. B.
s~/french. Ein Muster kann benutzt
werden.
t, ] Tag-Vervollstndigung
u Die nicht geladenen Puffer in der Pufferliste
U Die Puffer, die nicht in der Pufferliste stehen
w Puffer in anderen Fenstern
Vervollstndigungsoptionen
Option Vorgabe
complete (cpt) .,w,b,u,t,i
completefunc (cfu)
completeopt (cot) menu,preview
define (def) ^\s*#\s*define
dictionary (dict)
include (inc) ^\s*#\s*include
infercase (inf) noinfercase
isfname (isf) @,48-57,/,.,-,_,+,,,#,$,%,~,=
iskeyword (isk) @,48-57,_,192-255
omnifunc (ofu)
54 | vi und Vim kurz & gut
Option Vorgabe
pumheight (ph) 0
showfulltag (sft) noshowfulltag
spell nospell
thesaurus (tsr)
Der Diff-Modus
Wird Vim als entweder vimdiff oder gvimdiff aufgerufen, bietet
es einen Diff-Modus, der es Ihnen erlaubt, die Unterschiede
zwischen zwei Dateien zu vergleichen. vimdiff dient dem Ein-
satz auf einem Standardterminal (oder in einem Terminal-
Emulator), whrend gvimdiff die GUI-Fhigkeiten Ihres
Betriebssystems benutzt.
Wenn Vim aus den Quellen kompiliert wurde, sind vimdiff und
gvimdiff normalerweise als Links auf Vim installiert. Auf einem
System mit einem Paketmanager mssen Sie sie vermutlich
getrennt installieren.
Abbildung 1 zeigt einen Beispiel-Screenshot von gvimdiff in
Aktion. Das Bild zeigt drei wichtige Punkte:
Zeilen, die identisch sind, werden gefaltet, damit sie ver-
borgen sind (siehe Text falten und entfalten fr Infor-
mationen zum Falten von Text).
Zeilen, die in der einen Datei auftauchen, aber in der
anderen nicht, werden in der Datei, in der sie sich befin-
den, hervorgehoben (in hellblau). In der Datei, in der sie
fehlen, stehen an dieser Stelle Zeichen mit Bindestrichen.
Zeilen, die sich zwischen den Dateien unterscheiden, wer-
den hervorgehoben (in pink), wobei die eigentlichen
Unterschiede zwischen den Zeilen rot hervorgehoben
werden.
In diesem Modus ist es einfach, Textschnipsel von einer Datei
zur anderen zu verschieben. Wenn Sie z. B. ein Projekt mithilfe
von Kopien von Bibliotheksdateien aus einer anderen Quelle
Vim verbessertes vi | 55
pflegen, dann ist es leicht, wenn die Quelldateien durchgese-
hen werden, die nderungen zu kopieren und in Ihre Version
der Datei einzufgen.
Vim-Skripting
Skripting in Vim ist ein groes Thema, das ein eigenes Buch
verdient. Dieser Abschnitt prsentiert nur die absoluten
Grundlagen. Weitere Informationen finden Sie in Kapitel 12
von Learning the vi and Vim Editors sowie in der Onlinehilfe.
Vim bietet im Prinzip eine ausgewachsene Programmierspra-
che mit Variablen, Operatoren, Kontrollflusskonstrukten und
der Fhigkeit, eigene Funktionen zu definieren. In diesem
Abschnitt schauen wir sie uns (kurz) einmal an.
Wie in vi beginnen Kommentare mit einem doppelten Anfh-
rungszeichen und laufen bis zum Ende der Zeile. Kommentare
setzt man blicherweise auf eigene Zeilen, um Probleme mit
Strings zu vermeiden, die mit doppelten Anfhrungszeichen
versehen sind, die ebenfalls Teil von Vims Sprache sind.
Variablen, Optionen und Zahlen
Vim erlaubt Ihnen, Ihre eigenen Variablen zu definieren, und
enthlt einen Mechanismus, mit dem man den Geltungsbe-
reich oder die Lebenszeit einer Variablen anzeigen kann. Sie
knnen auch auf den Wert der Vim-Optionen zugreifen. Vari-
ablennamen bestehen aus siner Anzahl von Buchstaben, Zif-
fern oder Unterstrichen und drfen nicht mit einer Ziffer begin-
nen. Vim benutzt besondere Marker vor dem Variablen- oder
Optionsnamen, um den Typ und den Geltungsbereich anzu-
zeigen. Diese Variablen sind standardmig global:
Prfix Bedeutung
& Vim-Option
$ Umgebungsvariable
@ Register (Namen mit nur einem Zeichen)
56 | vi und Vim kurz & gut
Abbildung 1. gvimdiff in Aktion
Vim verbessertes vi | 57
Prfix Bedeutung
a: Funktionsargument
b: Lokal zum Puffer
g: Global
l: Lokal zur Funktion
s: Lokal zum Skript gelesen mit source
t: Lokal zur Tabseite
v: Vim-definierte globale Variable
w: Lokal zum Fenster
Zwei Befehle weisen einer Variablen einen Wert zu bzw. ent-
fernen eine Variable:
Befehl Funktion
let Weist einen Wert zu.
unlet[!] Entfernt eine Variable; ein hinzugefg-
tes ! verhindert eine Diagnose, falls die
Variable nicht existiert.
Numerische Werte in Vim sind immer Integer-Werte. Das
Prfix 0 (null) zeigt an, dass es sich um oktale Werte handelt
(Basis 8), whrend 0x oder 0X auf Hexadezimalzahlen hinwei-
sen (Basis 16). Ansonsten werden Dezimalzahlen angenom-
men (Basis 10).
Vim bietet normale Arrays (bezeichnet als Listen) und assozi-
ative Arrays (bezeichnet als Dictionaries). Da Dictionaries
Funktionen enthalten, knnte man sogar objektorientiert pro-
grammieren! Mehr dazu in der Onlinehilfe.
Kontrollflussbefehle
Die Kontrollflussbefehle sind konventionell, enstprechend der
folgenden Tabelle.
58 | vi und Vim kurz & gut
Befehl Funktion
if Bedingung
Befehle
elsif Bedingung
Befehle
else Bedingung
Befehle
endif
If-then-else-Statement: Die elsif- und
else-Teile sind optional; es kann so viele
elsif-Teile geben wie ntig.
for var in Liste
Befehle
endfor
Schleife ber eine Liste von Werten: Setzt
Variable var auf einen neuen Wert, bevor
Befehle ausgefhrt werden. Das ist hnlich
wie bei der Shell-for-Schleife.
while Bedingung
Befehle
endwhile
Fhrt Befehle aus, solange Bedingung wahr
ist.
try
Befehle
catch Muster
Befehle
finally
Befehle
endtry
Erfasst Ausnahmen (Details in der Online-
hilfe).
break Bricht aus der umschlieenden while-
Schleife aus, wodurch der Rest des Schlei-
fenkrpers bersprungen und die Schleife
beendet wird.
continue Geht an den Anfang der umschlieenden
while-Schleife, wodurch der Rest des
Schleifenkrpers bersprungen wird.
finish Beenden des Skriptlesens mit dem
source-Befehl.
throw Ausdruck Bewertet Ausdruck und wirft das Ergebnis
als Exception; die Exception wird mit einer
catch-Klausel in tryendtry
erfasst.
Vim verbessertes vi | 59
Operatoren
Ausdrcke werden aufgebaut, indem man Operatoren auf
Werte anwendet. Die Werte werden aus numerischen oder
Stringkonstanten sowie aus Variablen, Optionen und Listen-
oder Dictionary-Elementen zusammengesetzt. Die meisten der
Operatoren sind Programmierern vertraut, ihre Rangordnung
ist im Allgemeinen die gleiche wie in der Sprache C (in der
Onlinehilfe steht The usual precedence is used).
Operatoren Bedeutung
+ Addition und Subtraktion
* / % Multiplikation, Division und Modulo
. (Punkt) Stringverkettung
e1 ? e2 : e3 Der ternre C-Operator: falls e1 wahr ist,
benutze e2, ansonsten nimm e3
== != Gleich und ungleich
< <= Kleiner als und kleiner gleich
> >= Grer als und grer gleich
=~ !~ Passt und passt nicht (Filterung regulrer
Ausdrcke)
= Absolute Zuweisung, Benutzung mit let
+= -= .= Inkrementale Zuweisung: addiere zu, sub-
trahiere von und verkette bis zum Ende;
Benutzung mit let
Standardmig ignorieren oder beachten Vergleichsoperato-
ren (==, !=, <, <=, >, >=, =~, !~) die Gro- und Kleinschreibung
entsprechend der Einstellung von ignorecase. Das Suffix # der
Operatoren erzwingt die Beachtung der Gro- und Klein-
schreibung, whrend ? dafr sorgt, dass die Schreibweise igno-
riert wird.
Benutzerdefinierte Funktionen
Vim erlaubt Ihnen, Ihre eigenen Funktionen zu definieren. Die
folgende Tabelle stellt die Befehle vor, die zum Definieren und
60 | vi und Vim kurz & gut
Aufrufen der Funktionen geeignet sind. Weitere Erluterungen
folgen im Anschluss an die Tabelle.
Befehl Funktion
function Name([Args])
Befehle
return Wert
endfunction
Definiert eine Funktion
function Name([Args]) range
Befehle
return Wert
endfunction
Definiert eine Funktion, die auf einem
Bereich von Zeilen operiert
function! Name([Args])
Befehle
return Werte
endfunction
Definiert eine Funktion, selbst wenn die
Funktion schon existiert
function Name(Args, ...)
Befehle
return Wert
endfunction
Definiert eine Funktion, die eine variable
Anzahl von Argumenten bernimmt
function Listet alle benutzerdefinierten Funktions-
namen und ihre Argumente auf
function Name
Zeigt den Body der Funktion Name
delfunction Name
Entfernt die Funktion Name
[N,M] call Funk([Args])
Ruft eine Funktion auf einem Bereich von
Zeilen N bis M auf
Benutzerdefinierte Funktionsnamen mssen mit einem Gro-
buchstaben beginnen, damit Vim sie von den eingebauten
Funktionen unterscheiden kann.
Argumente (Parameter) sind optional. Werden sie angegeben,
dann referenziert man sie im Funktionskrper mit dem Prfix
a: vor dem Namen. Wird die ...-Syntax benutzt, dann greift
man auf die zustzlichen, unbenannten Argumente als a:1, a:
2 usw. zu. a:0 ist ein Zhler der zustzlichen Parameter, und
Vim verbessertes vi | 61
a:000 ist eine Liste aller zustzlichen Argumente. Funktionen
mit ... knnen bis zu 20 zustzliche Argumente haben.
Funktionen, die mit der range-Syntax definiert sind, werden
einmal fr den Bereich der Zeilen aufgerufen; die Anfangs- und
Endzeilennummern sind als a:firstline bzw. a:lastline ver-
fgbar. Funktionen, die ohne range definiert werden, werden
einmal fr jede Zeile im Bereich aufgerufen.
Benutzen Sie die return-Anweisung, um einen Wert von der
Funktion zurckzugeben. Rckgabewerte mssen numerisch
sein; return ohne Wert und Herunterfallen vom Ende der
Funktion lsst den Wert null zurckgeben.
Variablen innerhalb eines Funktionskrpers sind automatisch
lokal fr die Funktion; man muss das Prfix g: voranstellen,
um auf globale Variablen zuzugreifen.
Der Funktionskrper wird beim Aufruf der Funktion auf Gl-
tigkeit berprft, nicht bei der Definition. Sie mssen daher
Ihre Funktionen sorgfltig testen, bevor Sie sie verffentlichen.
Der call-Befehl ruft eine Funktion auf einem Bereich von Zei-
len auf. Ansonsten knnen Funktionsaufrufe als Elemente in
einem Ausdruck in einem beliebigen Kontext benutzt werden,
der einen Ausdruck akzeptiert (z. B. mit if).
Vim bietet auerdem Funktionsreferenzen, also Variablen, die
auf Funktionen zeigen und benutzt werden knnen, um sie
indirekt aufzurufen. Solche Variablen mssen Namen tragen,
die mit einem Grobuchstaben beginnen. Kombiniert mit Dic-
tionaries bieten sie rudimentre objektorientierte Program-
mierfhigkeiten; mehr dazu in der Onlinehilfe.
Natrlich stehen die Chancen in der Welt der Freien Software
gut, dass jemand schon die Funktion geschrieben hat, die Sie
interessiert (oder zumindest 90% davon). Auf der Vim-Websi
te sind viele Vim-Funktionen verfgbar. Schauen Sie erst dort
nach, bevor Sie sich daran machen, eine Funktion selbst zu
schreiben!
62 | vi und Vim kurz & gut
Skripten ausfhren
Es gibt mehrere Mglichkeiten, Skripten auszufhren. Sie
knnen eine Datei direkt mit dem source-Befehl lesen. Z.B.
knnte Ihre ~/.vimrc-Datei source ~/.exrc ausfhren. So kn-
nen Sie Befehle behalten, die nur in vi in der .exrc-Datei funk-
tionieren, whrend Sie sie weiterhin in Vim ausfhren knnen.
Gebruchlicher ist der auto-commands -Mechanismus, der
Ihnen gestattet, Skripten auf der Grundlage des Dateityps zu
lesen und auszufhren; festgelegt wird der Typ durch das Suf-
fix der Datei. Z.B. steht in der .vimrc-Datei des Autors Folgen-
des :
autocmd BufReadPre,FileReadPre *.xml source ~/.ex-sgml-rc
Die Aliase und Eingabezuordnungen, die speziell fr XML gel-
ten, werden in einer separaten Datei aufbewahrt. Dadurch
kommen sie Ihnen nicht in die Quere, wenn Sie mit anderen
Dateien arbeiten, stehen aber zur Verfgung, wenn Sie XML
bearbeiten .
Vim-set-Optionen
Option Vorgabe
autoread (ar) noautoread
background (bg) dark or light
backspace (bs) 0
backup (bk) nobackup
backupdir (bdir) .,~/tmp/,~/
backupext (bex) ~
binary (bin) nobinary
cindent (cin) nocindent
cinkeys (cink) 0{,0},:,0#,!^F,o,O,e
cinoptions (cino)
cinwords (cinw) if,else,while,do,for,switch
Vim verbessertes vi | 63
Option Vorgabe
comments (com)
compatible (cp) cp; nocp, wenn eine .vimrc-Datei gefunden wird
completeopt (cot) menu,preview
cpoptions (cpo) aABceFs
cursorcolumn (cuc) nocursorcolumn
cursorline (cul) nocursorline
define (def) ^\s*#\s*define
directory (dir) .,~/tmp,/tmp
equalprg (ep)
errorfile (ef) errors.err
errorformat (efm) (zu lang zum Drucken)
expandtab (et) noexpandtab
fileformat (ff) unix
fileformats (ffs) dos,unix
formatoptions (fo) Vim-Vorgabe: tcq; vi-Vorgabe: vt
gdefault (gd) nogdefault
guifont (gfn)
hidden (hid) nohidden
hlsearch (hls) nohlsearch
history (hi) Vim-Vorgabe: 20; vi-Vorgabe: 0
icon noicon
iconstring
include (inc) ^\s*#\s*include
incsearch (is) noincsearch
isfname (isf) @,48-57,/,.,-,_,+,,,#,$,%,~,=
isident (isi) @,48-57,_,192-255
iskeyword (isk) @,48-57,_,192-255
isprint (isp) @,161-255
64 | vi und Vim kurz & gut
Option Vorgabe
makeef (mef) /tmp/vim##.err
makeprg (mp) make
modifiable (ma) modifiable
mouse
mousehide (mh) nomousehide
paste nopaste
(ru) noruler
secure nosecure
shellpipe (sp)
shellredir (srr)
showmode (smd) Vim-Vorgabe: smd; vi-Vorgabe: nosmd
sidescroll (ss) 0
smartcase (scs) nosmartcase
spell nospell
suffixes *.bak,~,.o,.h,.info,.swp
taglength (tl) 0
tagrelative (tr) Vim-Vorgabe: tr; vi-Vorgabe: notr
tags (tag) ./tags,tags
tildeop (top) notildeop
undolevels (ul) 1000
viminfo (vi)
writebackup (wb) writebackup
nvi New vi
nvi ist ein vi- Klon, der fr 4.4BSD Berkeley Unix geschaffen
wurde. Er soll Bug fr Bug kompatibel mit dem Original sein,
obwohl er eine Reihe von Erweiterungen gegenber dem Ori-
ginal-vi besitzt.
nvi New vi | 65
Wichtige Kommandozeilenoptionen
-c Befehl
Fhrt beim Start Befehl aus.
-F Kopiert zu Anfang der Bearbeitung nicht die gesamte
Datei.
-R Start mit Schreibschutz, die Option readonly wird gesetzt.
-s Startet den Skriptmodus. Das gilt nur fr ex und ist fr
das Ausfhren von Bearbeitungsskripten gedacht.
Prompts und Nichtfehlermeldungen sind deaktiviert.
-S Luft mit gesetzter secure-Option, verbietet dadurch
Zugriff auf externe Programme.
nvi-Fenstermanagementbefehle
Befehl Funktion
bg Blendet das aktuelle Fenster aus
di[splay] b[uffers] Zeigt alle Puffer an, einschlielich benann-
ter, unbenannter und numerischer Puffer
di[splay] s[creens] Zeigt die Dateinamen der Hintergrund-
fenster an
Edit Dateiname Bearbeitet Dateiname in einem neuen
Fenster
Edit /tmp Erzeugt ein neues Fenster zum Bearbeiten
eines leeren Puffers; /tmp wird so inter-
pretiert, dass eine neue temporre Datei
angelegt wird
fg Dateiname Holt Dateiname ins aktuelle Fenster
Fg Dateiname Holt Dateiname in ein neues Fenster; das
aktuelle Fenster wird geteilt
Next Bearbeitet die nchste Datei in der Argu-
mentliste in einem neuen Fenster
Previous Bearbeitet die vorangegangene Datei in
der Argumentliste in einem neuen Fenster
66 | vi und Vim kurz & gut
Befehl Funktion
resize nzeilen Vergrert oder verkleinert die Gre des
aktuellen Fensters um nzeilen Zeilen
Tag Tagstring Bearbeitet die Datei, die Tagstring enthlt,
in einem neuen Fenster
Der Befehl ^W rotiert von oben nach unten durch die Fenster.
Die Befehle :q und ZZ schlieen das aktuelle Fenster.
Sie knnen fr eine Datei mehrere Fenster geffnet haben.
nderungen in einem Fenster spiegeln sich in den anderen
Fenstern wider.
Erweiterte regulre Ausdrcke fr nvi
Sie verwenden :set extended, um eine Filterung mit erwei-
terten regulren Ausdrcken zuzulassen:
| Kennzeichnet Alternativen. Die linken und rechten Seiten
mssen nicht aus einzelnen Zeichen bestehen.
+ Entspricht einem oder mehreren der vorangegangenen
regulren Ausdrcke. Das ist entweder ein einzelnes Zei-
chen oder eine Gruppe von Zeichen, die in Klammern
eingeschlossen sind.
? Entspricht keinem oder einem Vorkommen des vorange-
gangenen regulren Ausdrucks.
(...)
Wird benutzt zur Gruppierung, um die Anwendung
zustzlicher Operatoren zu ermglichen.
{...}
Beschreibt einen Intervallausdruck (Intervallausdrcke
werden in Erweiterte regulre Ausdrcke in Vim defi-
niert).
Wenn extended nicht gesetzt ist, verwenden Sie \{ und \}.
nvi New vi | 67
Wenn extended gesetzt ist, sollten Sie den obigen Metazeichen
einen Backslash voranstellen, damit sie als solche gefiltert wer-
den.
Optionen fr Kommandozeilen-History und
Vervollstndigung
Option Beschreibung
cedit Das erste Zeichen dieses Strings bietet,
wenn es auf der Doppelpunkt-Komman-
dozeile benutzt wird, Zugriff auf die
Befehls-History; ENTER auf einer der
gezeigten Zeilen fhrt diese Zeile aus.
filec Das erste Zeichen dieses Strings fhrt,
wenn er auf der Doppelpunkt-Komman-
dozeile ausgefhrt wird, eine Shell-artige
Dateinamenerweiterung durch; wenn die-
ses Zeichen das gleiche ist wie fr die Option
cedit, dann wird die Kommandozeilen-
bearbeitung nur durchgefhrt, wenn das
Zeichen als erstes Zeichen auf der Doppel-
punkt-Kommandozeile eingegeben wird.
Beide Optionen sind nicht standardmig gesetzt. Setzen Sie
sie in der Datei $HOME/.nexrc.
Tag-Stacks
nvi bietet sowohl ex- als auch vi-Befehle zum Verwalten des
Tag-Stacks.
Tag-Befehle ex
Befehl Funktion
di[splay] t[ags] Zeigt den Tag-Stack an
ta[g][!] Tagstring Bearbeitet die Datei, die den Tagstring ent-
hlt, wie in der tags-Datei definiert
68 | vi und Vim kurz & gut
Befehl Funktion
Ta[g][!] Tagstring Genau wie :tag, nur dass diese Datei in
einem neuen Fenster bearbeitet wird
tagp[op][!] Tagloc Springt zum angegebenen oder zum
zuletzt benutzten Tag, falls kein Tagloc
genannt ist
tagt[op][!] Springt zum ltesten Tag im Stack, leert
dabei den Stack
Tag-Befehle vi
Befehl Funktion
^] Sucht den Ort des Identifikators unter dem
Cursor in der tags-Datei und geht dorthin;
die aktuelle Datei wird automatisch auf den
Tag-Stack geschoben
^T Kehrt an den vorangegangenen Ort im Tag-
Stack zurck
nvi 1.79-set-Optionen
Option Vorgabe
backup
cdpath Umgebungsvariable $CDPATH oder aktu-
elles Verzeichnis
cedit
comment nocomment
directory (dir) $TMPDIR oder /tmp
extended noextended
filec
iclower noiclower
leftright noleftright
lock lock
nvi New vi | 69
Option Vorgabe
octal nooctal
path
recdir /var/tmp/vi.recover
ruler noruler
searchincr nosearchincr
secure nosecure
shellmeta ~{[*?$`'"\
showmode (smd) noshowmode
sidescroll 16
taglength (tl) 0
tags (tag) tags /var/db/libc.tags /sys/kern/tags
tildeop notildeop
wraplen (wl) 0
elvis
elvis ist ein vi-Klon, der von Steve Kirkendall geschrieben wur-
de.
Wichtige Kommandozeilen-Optionen
-a Ldt jede Datei in ein eigenes Fenster, die auf der Kom-
mandozeile genannt wurde.
-c Befehl
Fhrt beim Start Befehl aus (POSIX-Version der histori-
schen +Befehl-Syntax).
-f Dateiname
Benutzt anstelle des vorgegebenen Namens Dateiname fr
die Sitzungsdatei.
70 | vi und Vim kurz & gut
-G gui
Benutzt das angegebene Interface. Vorgabe ist das term-
cap-Interface. Andere Mglichkeiten sind x11, windows,
curses, open und quit. Unter Umstnden knnen nicht
alle Interfaces in Ihre Version von elvis kompiliert werden.
-i Bearbeitung beginnt im Einfgemodus und nicht im
Befehlsmodus.
-o Logdatei
Leitet die Startmeldungen in eine Datei um anstatt auf
stdout/stderr. Das ist fr MS Windows-Benutzer wichtig,
weil Windows alles verwirft, was auf der Standardausgabe
und der Standardfehlerausgabe ausgegeben wird.
-R Startet das Bearbeiten aller Dateien im schreibgeschtzten
Modus.
-s Liest ein ex-Skript von der Standardeingabe und fhrt es
aus (nach POSIX-Standard). Das umgeht alle Initialisie-
rungsskripten.
-S Setzt die Option security=safer fr die gesamte Sitzung,
nicht nur fr die Ausfhrung von .exrc-Dateien. Das
bringt eine gewisse Sicherheit, aber man darf dem nicht
blind vertrauen.
-SS
Setzt die Option security=restricted, die noch paranoi-
der ist als security=safer.
-V Gibt ausfhrlichere Statusinformationen aus.
-? Gibt eine Zusammenfassung der mglichen Optionen
aus.
elvis-Fensterverwaltung
elvis erlaubt das Bearbeiten in mehreren Fenstern.
elvis | 71
Befehle zur Fensterverwaltung ex
Befehl Funktion
close Schliet das aktuelle Fenster; der Puffer,
den das Fenster angezeigt hat, bleibt
intakt.
new Erzeugt einen neuen, leeren Puffer und legt
ein neues Fenster an, um diesen Puffer
anzuzeigen.
qall Fhrt einen :q-Befehl fr alle Fenster aus;
Puffer ohne Fenster werden nicht beein-
flusst.
sa[ll] Erzeugt ein neues Fenster fr alle Dateien,
die in der Argumentliste genannt werden
und noch kein Fenster haben.
sl[ast] Erzeugt ein neues Fenster, das die letzte
Datei in der Argumentliste zeigt.
sne[w] Identisch mit new
sn[ext] [Datei...] Erzeugt ein neues Fenster, das die nchste
Datei in der Argumentliste zeigt.
sN[ext] Erzeugt ein neues Fenster, das die vorhe-
rige Datei in der Argumentliste zeigt.
sp[lit] [Datei] Erzeugt ein neues Fenster; ldt dort Datei,
falls angegeben, ansonsten zeigt es die
aktuelle Datei.
sre[wind][!] Erzeugt ein neues Fenster, zeigt die erste
Datei in der Argumentliste; setzt die aktu-
elle Datei als erste zurck (unter Berck-
sichtigung des :next-Befehls).
sta[g][!] Tag Erzeugt ein neues Fenster, in dem die Datei
gezeigt wird, in der der angeforderte Tag
zu finden ist.
wi[ndow] [Ziel] Ohne Ziel werden alle Fenster aufgelistet;
die mglichen Werte fr Ziel werden in der
nchsten Tabelle beschrieben.
72 | vi und Vim kurz & gut
Befehl Funktion
wquit Schreibt den Puffer zurck in die Datei und
schliet das Fenster; die Datei wird gesi-
chert, auch wenn sie nicht verndert wur-
de.
Argumente fr den :window-Befehl
Argument Bedeutung
+ Schaltet ins nchste Fenster um, wie ^W k
++ Schaltet ins nchste Fenster um, Wrapping
wie ^W ^W
- Schaltet in vorherige Fenster um, wie ^W j
- - Schaltet ins vorherige Fenster um, Wrap-
ping
Num Schaltet ins Fenster mit der windowid
= Num
Puffername Schaltet ins Fenster um, in dem der
benannte Puffer bearbeitet wird
Befehle zur Fensterverwaltung vi
Befehl Funktion
^W c Blendet den Puffer aus und schliet das
Fenster.
^W d Schaltet den Anzeigemodus zwischen
normal und dem blichen Anzeigemo-
dus des Puffers hin und her; Option gilt je
Fenster.
^W j Geht zum nchsten Fenster nach unten.
^W k Geht zum vorherigen Fenster nach oben.
^W n Erzeugt ein neues Fenster und einen neuen
Puffer, der in dem Fenster angezeigt wird.
^W q Speichert den Puffer und schliet das Fens-
ter.
elvis | 73
Befehl Funktion
^W s Teilt das aktuelle Fenster.
^W S Schaltet die wrap-Option ein und aus; die-
se Option steuert, ob lange Zeilen umge-
brochen werden oder ob der ganze Bild-
schirm nach rechts scrollt; Option gilt pro
Fenster.
[N] ^W ^W Geht ins nchste oder ins N-te Fenster.
^W ] Erzeugt ein neues Fenster, sucht dann den
Tag unter dem Cursor.
^W + Vergrert die Gre des aktuellen Fens-
ters (nur termcap-Interface).
^W - Reduziert die Gre des aktuellen Fensters
(nur termcap-Interface).
^W \ Macht das aktuelle Fenster so gro wie
mglich (nur termcap-Interface).
Erweiterte regulre Ausdrcke in elvis
\| Kennzeichnet eine Alternierung.
\+ Entspricht einem oder mehreren der vorangegangenen
regulren Ausdrcke.
\? Entspricht keinem oder einem der vorangegangenen regu-
lren Ausdrcke.
\@ Entspricht dem Wort unter dem Cursor.
\= Zeigt an, wohin der Cursor gesetzt werden soll, wenn der
Text passt.
\(...\)
Wird zum Gruppieren benutzt, um die Anwendung
zustzlicher Operatoren zu erlauben.
\{...\}
Beschreibt einen Intervallausdruck (Intervallausdrcke
werden in Erweiterte regulre Ausdrcke in Vim defi-
niert).
74 | vi und Vim kurz & gut
Es gibt auch POSIX-Klammerausdrcke (Zeichenklassen usw.,
siehe POSIX-Zeichenklassen).
Tasten fr Kommandozeilen-History und
Vervollstndigung
Taste Effekt
, Seite nach oben und unten durch den Elvis ex history-Puffer
, Auf der Kommandozeile bewegen
Fgen Sie Zeichen durch Tippen ein und lschen Sie sie mit
der Backspace-Taste.
Sie knnen die TAB-Taste zur Dateinamenerweiterung benut-
zen.
Um ein echtes Tabzeichen zu bekommen, setzen Sie ihm ein
^V voran. Sie deaktivieren die Dateinamenvervollstndigung,
indem Sie die inputtab-Option des Elvis ex history-Puffers
mit dem folgenden Befehl auf tab setzen:
:(Elvis ex history)set inputtab=tab
Tag-Stacks
elvis bietet sowohl ex- als auch vi-Befehle zum Verwalten des
Tag-Stacks.
Tag-Befehle ex
Befehl Funktion
ta[g][!] [Tagstring] Bearbeitet die Datei, die Tagstring enthlt,
wie in der tags-Datei festgelegt.
stac[k] Zeigt den aktuellen Tag-Stack an.
po[p][!] Springt mit dem Cursor eine Position nach
unten im Stack und stellt dadurch fr den
Cursor die vorherige Position wieder her.
elvis | 75
Tag-Befehle vi
Befehl Funktion
^] Sucht den Ort des Identifikators unter dem
Cursor in der tags-Datei und geht an diesen
Ort; der aktuelle Ort wird autopmatisch auf
den Tag-Stack geschoben.
^T Kehrt zum vorherigen Ort auf dem Tag-
Stack zurck.
Das Bearbeiten und Kompilieren beschleunigen
elvis bietet verschiedene Befehle zum Verbessern der Produk-
tivitt des Programmierers.
Programmentwicklungsbefehle ex
Befehl Option Funktion
cc[!] [Args] ccprg Fhrt den C-Compiler aus;
sinnvoll zum Neukompi-
lieren einer einzelnen
Datei.
er[rlist][!] [Datei] Geht zum Ort des nchs-
ten Fehlers.
mak[e][!] [Args] makeprg Kompiliert alles neu, was
neukompiliert werden
muss (meist ber make).
Anzeigemodi
Modus Aussehen der Anzeige
hex Ein interaktiver Hex-Dump, erinnert an
Mainframe-Hex-Dumps; gut zum Bearbei-
ten von Binrdateien.
html Einfacher Webseitenformatierer; die Tag-
Befehle knnen Links folgen und zurck-
kehren, um eine Webseite zu starten.
76 | vi und Vim kurz & gut
Modus Aussehen der Anzeige
man Einfacher Manpage-Formatierer; wie die
Ausgabe von nroff -man.
normal Keine Formatierung; Text wird so ange-
zeigt, wie er in der Datei steht.
syntax Wie normal, allerdings mit Syntaxfr-
bung.
tex Einfache Teilmenge des T
E
X-Formatierers
Befehle fr den Anzeigemodus ex
Befehl Funktion
di[splay] [Modus [Sprache]] ndert den Anzeigemodus auf Modus; benutzt
Sprache fr den syntax-Modus.
no[rmal] Identisch mit :display normal, aber einfa-
cher zu tippen.
Optionen fr das Druckmanagement
Option Funktion
lpcolor (lpcl) Aktiviert Farbdruck fr PostScript- und MS
Windows-Drucker.
lpcolumns (lpcols) Breite des Druckers
lpcontrast (lpct) Steuert Schattierung und Kontrast; fr
Benutzung mit lpcolor-Option.
lpconvert (lpcvt) Konvertiert, wenn gesetzt, erweitertes
Latin-8-ASCII in erweitertes PC-8-ASCII.
lpcrlf (lpc) Der Drucker braucht <CR><LF>, um die
einzelnen Zeilen zu beenden.
lpformfeed (lpff) Sendet nach der letzten Seite ein Formfeed.
lplines (lprows) Lnge der Druckerseite
lpoptions (lpopt) Steuert die verschiedenen Druckerfunkti-
onen; nur fr PostScript-Drucker wichtig.
lpout (lpo) Datei oder Befehl, in den gedruckt wird
elvis | 77
Option Funktion
lptype (lp) Druckertyp
lpwrap (lpw) Simuliert Zeilenumbruch
Werte fr die lptype-Option
Name Druckertyp
bs berdrucken wird per Backspace-Zeichen
erreicht; diese Einstellung entspricht am
ehesten dem traditionellen Unix-nroff.
cr Zeilendrucker; berdrucken erfolgt mit
Carriage Return.
dumb Einfaches ASCII, keine Schriftsteuerung
epson Die meisten Punktmatrix-Drucker, keine
Untersttzung fr Grafikzeichen
hp Hewlett-Packard-Drucker und die meisten
Nicht-PostScript-Laserdrucker
ibm Punktmatrix-Drucker mit IBM-Grafikzei-
chen
pana Panasonic-Punktmatrix-Drucker
ps PostScript, eine logische Seite pro Blatt
ps2 PostScript, zwei logische Seiten pro Blatt
elvis 2.2-Set-Optionen
elvis 2.2 hat insgesamt 225 Optionen, die sein Verhalten
beeinflussen. Die wichtigsten sind hier zusammengefasst.
Optionen, die auch vi bietet, werden hier nicht wiederholt.
Option Vorgabe
autoiconify (aic) noautoiconify
backup (bk) nobackup
binary (bin)
boldfont (xfb)
78 | vi und Vim kurz & gut
Option Vorgabe
bufdisplay (bd) normal
ccprg (cp) cc ($1?$1:$2)
directory (dir)
display (mode) normal
elvispath (epath)
equalprg (ep) fmt
focusnew (fn) focusnew
font (fnt)
gdefault (gd) nogdefault
home (home) $HOME
italicfont (xfi)
locked (lock) nolocked
lpcolor (lpcl) nolpcl
lpcolumns (lpcols) 80
lpcrlf (lpc) nolpcrlf
lpformfeed (lpff) nolpformfeed
lpheader (lph) nolph
lplines (lprows) 60
lpout (lpo)
lptype (lpt) dumb
lpwrap (lpw) lpwrap
makeprg (mp) make $1
prefersyntax (psyn) never
ruler (ru) noruler
security (sec) normal
showmarkups (smu) noshowmarkups
sidescroll (ss) 0
smartargs (sa) nosmartargs
elvis | 79
Option Vorgabe
spell (sp) nospell
taglength (tl) 0
tags (tagpath) tags
tagstack (tsk) tagstack
undolevels (ul) 0
warpback (wb) nowarpback
warpto (wt) don't
vile vi like Emacs
vile ist ein vi-Klon, der ursprnglich auf MicroEmacs basiert,
dessen hauptschliches Ziel darin bestand, das Feeling des
vi zu bieten.
Wichtige Kommandozeilenoptionen
-g N
vile beginnt die Bearbeitung auf der ersten Datei an der
angegebenen Zeilennummer; das kann man auch als +N
angeben.
-h Startet vile auf der Hilfedatei.
-R Startet vile im schreibgeschtzten Modus.
-s Muster
In der ersten Datei fhrt vile eine Suche nach dem ange-
gebenen Muster durch; man kann das auch als +/Muster
angeben.
-v Startet vile im Betrachtungsmodus; in diesem Modus
sind keine nderungen an den Puffern erlaubt.
-? vile gibt eine kurze Anleitung aus und beendet sich dann.
@ Befehlsdatei
vile fhrt die angegebene Datei als Startdatei aus und
bergeht damit seine normale Startdatei .
80 | vi und Vim kurz & gut
vile-Befehle zur Fensterverwaltung
Befehl Tastenfolge Funktion
delete-other-
windows
^O, ^X 1 Eliminiert alle Fenster mit Ausnahme des
aktuellen.
delete-window ^K, ^X 0 Zerstrt das aktuelle Fenster, es sei denn, es
ist das letzte.
edit-file, E, e
find-file
^X e Bringt die angegebene Datei (oder die Datei
unter dem Cursor fr ^X e) oder den exis-
tierenden Puffer in das Fenster.
grow-window V Vergrert das aktuelle Fenster um Zahl.
move-next-
window-down
^A ^E Geht zum nchsten Fenster nach unten (oder
Puffer nach oben), und zwar um Zahl Zeilen.
move-next-
window-up
^A ^Y Geht zum nchsten Fenster nach oben (oder
Puffer nach unten), und zwar um Zahl Zeilen.
move-window-
left
^X ^L Scrollt das Fenster um Zahl Spalten nach
links, bzw. um einen halben Bildschirm, falls
Zahl nicht angegeben wurde.
move-window-
right
^X ^R Scrollt das Fenster um Zahl Spalten nach
rechts, bzw. um einen halben Bildschirm,
falls Zahl nicht angegeben wurde.
next-window ^X o Geht ins nchste Fenster.
position-window z wo Fenster wird neu aufgebaut, und zwar mit
Cursorposition wo in der Mitte (., M, m), oben
( ENTER , H, t) oder unten (-, L, b).
previous-window ^X O Geht zum vorherigen Fenster.
resize-window ndert das aktuelle Fenster auf Zahl Zeilen.
restore-window Kehrt zum Fenster zurck, das mit save-
window gespeichert wurde.
save-window Markiert ein Fenster zum spteren Zurck-
kehren mit restore-window.
scroll-
next-
window-down
^A ^D Geht zum nchsten Fenster nach unten um
Zahl Halbbildschirme.
vile vi like Emacs | 81
Befehl Tastenfolge Funktion
scroll-
next- window-up
^A ^U Geht zum nchsten Fenster nach oben um
Zahl Halbbildschirme.
shrink-window v Verkleinert das aktuelle Fenster um Zahl Zei-
len.
split-current-
window
^X 2 Halbiert das Fenster; Zahl 1 oder 2 gibt an,
welches das aktuelle Fenster wird.
view-file Bringt die angegebene Datei oder den vor-
handenen Puffer in das Fenster und markiert
es als nur zur Ansicht.
historical-buf-
fer
_ Zeigt eine Liste der ersten neun Puffer an;
eine Ziffer geht zum angegebenen Puffer, _
_ geht zur zuletzt bearbeiteten Datei.
toggle-buffer-
list
* Zeigt ein Fenster an bzw. nicht an, das alle
vile-Puffer enthlt.
Erweiterte regulre Ausdrcke in vile
\| Kennzeichnet eine Alternierung.
\+ Entspricht einem oder mehreren der vorangegangenen
regulren Ausdrcke.
\? Entspricht keinem oder einem der vorangegangenen regu-
lren Ausdrcke.
\s \S
Entspricht Whitespace- bzw. Nicht-Whitespace-Zeichen.
\w \W
Entspricht wortbildenden Zeichen (alphanumerischen
Zeichen und Unterstrich _) bzw. nicht wortbildenden
Zeichen.
\d \D
Entspricht Ziffern bzw. Nichtziffern.
\p \P
Entspricht druckbaren bzw. nichtdruckbaren Zeichen.
Whitespace wird als druckbar betrachtet.
82 | vi und Vim kurz & gut
\(...\)
Bietet eine Gruppierung fr *, \+ und \?, macht passende
Subtexte im Ersetzungsteil eines Substitute-Befehls ver-
fgbar.
vile erlaubt es den Escape-Folgen \b, \f, \r, \t und \n, im
Ersetzungsteil eines Substitute-Befehls aufzutauchen. Diese
Folgen stehen fr Backspace, Formfeed, Carriage Return, Tab
bzw. Newline. Aus der vile-Dokumentation:
Beachten Sie, dass vile das perl-Verhalten in Bezug auf \u
\L\1\E imitiert und nicht das vi-Verhalten. Wenn :s/\
(abc\)/\u\L\1\E/ gegeben ist, ersetzt vi durch abc, wh-
rend vile und perl durch Abc ersetzen. Das ist etwas sinn-
voller fr die Groschreibung von Wrtern.
Kommandozeilen-History und Vervollstndigung
vile speichert alle Ihre ex-Befehle in einem Puffer namens
[History]. Optionen steuern Ihren Zugriff darauf sowie die
Benutzung des Minipuffers (der Doppelpunkt-Kommandozei-
le).
History-Befehle vi
Taste Bedeutung
, Geht in der History nach oben (vorherige),
nach unten (neuere)
, Geht auf der erneut aufgerufenen Zeile
nach links, rechts
BACKSPACE Lscht Zeichen
Die ex-Kommandozeile bietet verschiedene Arten der Vervoll-
stndigung. Die Vervollstndigung gilt fr eingebaute und
benutzerdefinierte vile-Befehle, Tags, Dateinamen, Modi und
Variablen sowie fr die Terminal-Zeichen (die Zeicheneinstel-
lung, wie etwa Backspace, Suspend usw., die aus den stty-Ein-
stellungen ermittelt wird).
vile vi like Emacs | 83
History-Optionen
Option Bedeutung
history Protokolliert Befehle von der Doppelpunkt-
Kommandozeile im [History]-Puffer.
mini-edit Das Zeichen, das den Bearbeitungsmodus
im Minipuffer so einstellt, dass vi-Bewe-
gungsbefehle benutzt werden. Sie knnen
auch die vi-Befehle i, I, a und A verwen-
den.
mini-hilite Definiert das Attribut zum Hervorheben,
das benutzt wird, wenn der Benutzer den
Bearbeitungsmodus im Minipuffer ein-
schaltet. Der Wert sollte none, under-
line, bold, italic oder reverse
sein; Vorgabe ist reverse.
Tag-Stacks
vile bietet sowohl ex- als auch vi-Befehle zum Verwalten des
Tag-Stacks.
Tag-Befehle ex
Befehl Funktion
ta[g][!] [Tagstring] Bearbeitet die Datei, die Tagstring enthlt,
wie in der tags-Datei definiert.
pop[!] Nimmt den Cursor eine Position herunter
vom Stack, stellt dadurch die vorherige
Position des Cursors wieder her.
next-tag Setzt die Suche durch die tags-Datei fr
weitere Treffer fort.
show-tagstack Erzeugt ein neues Fenster, das den Tag-
Stack anzeigt; die Anzeige ndert sich,
wenn Tags auf den Stack geschoben oder
von ihm heruntergenommen werden.
84 | vi und Vim kurz & gut
Tag-Befehle vi
Befehl Funktion
^] Sucht nach dem Ort des Identifikators unter
dem Cursor in der tags-Datei und geht
dorthin; der aktuelle Ort wird automatisch
auf den Tag-Stack geschoben.
^T
^X ^]
Kehrt an den vorherigen Ort im Tag-Stack
zurck, nimmt also ein Element herunter.
^A ^] Identisch mit dem :next-tag-Befehl
Das Bearbeiten und Kompilieren beschleunigen
Im Gegensatz zu den anderen Klonen bietet vile nur vi-Befehle
zum Verbessern der Produktivitt des Programmierers.
Programmentwicklungsbefehle vi
Befehl Funktion
^X ! Befehl ENTER Fhrt Befehl aus, sichert die Ausgabe in
einem Puffer namens [Output].
^X ^X Sucht den nchsten Fehler; vile parst die
Ausgabe und geht nacheinander an die
Orte der Fehler.
Die Fehlermeldungen werden mithilfe regulrer Ausdrcke im
Puffer [Error Expressions] geparst. vile legt diesen Puffer
automatisch an und benutzt ihn, wenn Sie ^X ^X einsetzen. Sie
knnen nach Bedarf Ausdrcke hinzufgen.
Sie knnen den Fehlerfinder auf einen beliebigen Puffer ver-
weisen lassen (nicht nur auf die Ausgabe der Shell-Befehle),
und zwar mit dem Befehl :error-buffer. Das erlaubt Ihnen,
den Fehlerfinder auf der Ausgabe des vorherigen Compilers zu
benutzen oder egrep auszufhren.
vile 9.8-Set-Optionen
vile vi like Emacs | 85
Option Default
alt-tabpos (atp) noatp
animated animated
autobuffer (ab) autobuffer
autocolor (ac) 0
autosave (as) noautosave
autosavecnt (ascnt) 256
backspacelimit (bl) backspacelimit
backup-style off
bcolor default
byteorder-mark (bom) auto
check-access current
check-modtime nocheck-modtime
cindent nocindent
cindent-chars :#{}()[]
cmode off
color-scheme (cs) default
comment-prefix ^\s*\(\(\s*[#*>]\)\|\(///*\)\)\
+
comments ^\s*/\?\(\s*[#*>/]\)\+/\?\s*$
cursor-tokens regex
dirc nodirc
dos nodos
fcolor default
fence-begin /\*
fence-end \*/
fence-if ^\s*#\s*if
fence-elif ^\s*#\s*elif\>
fence-else ^\s*#\s*else\>
fence-fi ^\s*#\s*endif\>
86 | vi und Vim kurz & gut
Option Default
fence-pairs {}()[]
file-encoding auto
filtername (fn)
for-buffers (fb) mixed
glob !echo %s
highlight (hl) highlight
history (hi) history
ignoresuffix (is) \(\.orig\|~\)$
horizscroll (hs) horizscroll
linewrap (lw) nolinewrap
maplonger nomaplonger
meta-insert-bindings (mib) mib
mini-hilite (mh) reverse
modeline nomodeline
modelines 5
overlap-matches overlap-matches
percent-crlf 50
percent-utf8 90
popup-choices (pc) delayed
popup-msgs (pm) nopopup-msgs
recordseparator (rs) lf
a
resolve-links noresolve-links
reuse-position noreuse-position
ruler noruler
showchar (sc) noshowchar
showformat (sf) foreign
showmode (smd) showmode
sideways 0
vile vi like Emacs | 87
Option Default
tabinsert (ti) tabinsert
tagignorecase (tc) notagignorecase
taglength (tl) 0
tagrelative (tr) notagrelative
tags tags
tagword (tw) notagword
undolimit (ul) 10
unicode-as-hex (uh) nounicode-as-hex
unprintable-as-octal (uo) nounprintable-as-octal
visual-matches none
xterm-fkeys noxterm-fkeys
xterm-mouse noxterm-mouse
xterm-title noxterm-title
a Dies hngt von der Plattform ab, fr die vile kompiliert wurde.
Internetressourcen fr vi
Es gibt viele Ressourcen und interessante Dinge im Internet,
die mit vi und seinen Klonen zu tun haben. Dieser Abschnitt
bietet Ihnen eine kurzen berblick ber einige davon:
http://www.thomer.com/vi/vi.html
Thomer M. Gils vi Lovers Homepage. Das ist eine der
beiden wichtigsten Sites fr vi mit Links auf viele Res-
sourcen und andere Sites.
http://www.vi-editor.org
Sven Guckes VI Pages. Das ist die zweite der wichtigsten
vi-Sites.
http://www.darryl.com/vi.shtml
Ein This site is vi powered-Logo, wie es in Abbil-
dung 2 zu sehen ist.
88 | vi und Vim kurz & gut
http://www.cafepress.com/geekcheat/366808
Knappe vi-Befehlsreferenzen, gedruckt auf Kaffeetassen,
T-Shirts und mehr!
http://www.networkcomputing.com/unixworld/tutorial/009/
009.html
Eine neunteilige Anleitung fr vi von Walter Zintz,
ursprnglich verffentlicht im Unix World-Magazin.
http://ars.userfriendly.org/cartoons/?id=20000106
Das ist der Anfang der vigor-Geschichte im User Friend-
ly-Comic, die die Inspiration fr den nchsten Eintrag in
dieser Liste hier war.
http://vigor.sourceforge.net
Der Quellcode fr vigor.
Abbildung 2. vi powered!
Programmquellen und
Kontaktinformationen
Editor Modernisiertes, ursprngliches vi
Autor Gunnar Ritter
E-Mail gunnarr@acm.org
Quelle http://ex-vi.sourceforge.net
Editor Vim
Autor Bram Moolenaar
E-Mail Bram@vim.org
Quelle http://www.vim.org/
Editor nvi
Programmquellen und Kontaktinformationen | 89
Autor Keith Bostic
E-Mail bostic@bostic.com
Quelle https://sites.google.com/a/bostic.com/keithbostic/nvi
Editor elvis
Autor Steve Kirkendall
E-Mail kirkenda@cs.pdx.edu
Quelle ftp://ftp.cs.pdx.edu/pub/elvis/README.html
Editor vile
Autoren Kevin Buettner, Tom Dickey und Paul Fox
E-Mail vile@nongnu.org
Quelle http://www.invisible-island.net/vile/vile.html
90 | vi und Vim kurz & gut
Index
A
Abkrzungen 9
quivalenzklassen 15
ausfhrbare Puffer 10
auto-commands 59
automatischer Einzug 11
B
Bearbeitung mit Tabs 31, 33
Bearbeitungsbefehle 6
Befehle 9, 11
auto-commands (Skrip-
ting) 59
Bearbeitungsbefehle 6
Bewegungsbefehle 3
ex-Befehle 17, 21
Exit-Befehle 7
Markierbefehle 9
Pufferbefehle 9
Substitute-Befehl 12
Befehlsmodus 3
Befehlsmodus-Maps 9
Bewegungsbefehle 3
C
ctags 25
D
Dictionarys 54
diff-Modus 51
E
Einfgemodus-Krzel 9
Einfgemodus-Maps 9
Einstellungsoptionen 22
elvis 75
erweiterte regulre Aus-
drcke 69
Fensterverwaltung 67, 69
Kommandozeilen-History
70
91
Kommandozeilen-Optio-
nen 66
Programmentwicklungs-
befehle 71, 73
Set-Optionen 73
Tag-Stacks 70
Vervollstndigungstasten
70
ex-Befehle 17, 21
Exit-Befehle 7
.exrc-Dateien 22
Exuberant ctags 25
F
Falten und Entfalten von
Text 43, 46
Fenstermanagement
nvi 62
Fensterverwaltung 31
elvis 67
vile 75
Vim 28
Funktionsreferenzen 58
G
Geltungsbereich 53
grogeschriebene Befehle 3
I
Initialisierungsschritte 22
Internet-Ressourcen 83
K
Klammerausdrcke 14
kleingeschriebene Befehle 3
Kommandozeilen-Optionen
elvis 66
Kommandozeilenoptionen 2
nvi 62
vile 75
Vim 27
L
Listen 54
Lokalisierung 14
M
Maps 9
Markierbefehle 9
Metazeichen in Ersetzungsst-
rings 15
N
nvi 61, 66
erweiterte regulre Aus-
drcke 63
Fenstermanagementbe-
fehle 62
Kommandozeilen-History
und Vervollstndigung 64
Kommandozeilenoptio-
nen 62
set-Optionen 65
Tag-Stacks 64
P
POSIX-Klammerausdrcke
14
Puffer, ausfhrbare 10
Pufferbefehle 9
Puffernamen 8
92 | Index
Q
Quellcode 24, 84
R
regulre Ausdrcke 12, 36
elvis 69
Metazeichen in Erset-
zungsstrings 15
nvi 63
POSIX-Klammerausdr-
cke und Zeichenklassen
14
Substitute-Befehl und
Flags 12
vile 77
Vim 34
S
set-Optionen
nvi 65
vile 81
Vim 59
Set-Optionen
elvis 73
Solaris vi 1
Solaris-vi
Befehlsmodus-Tag-Befeh-
le 8
Tag-Stacking 26
Sortiersymbole 15
Substitute-Befehl 12
Substitutionstricks 16
T
Tag-Stacks 25
elvis 70
nvi 64
vile 79
Vim 37
tags-Dateiformat 25
V
verbesserte Tags 25
Vervollstndigen 47
vi-Quellcode 24
vi-Versionen 1
vile 83
erweiterte regulre Aus-
drcke 77
Fensterverwaltungsbefeh-
le 75
Kommandozeilen-History
und Vervollstndigung 78
Kommandozeilenoptio-
nen 75
Programmentwicklungs-
befehle 80
Set-Optionen 81
Tag-Stacks 79
Vim 53, 56, 59, 61
Bearbeitung mit Tabs 31,
33
diff-Modus 51
Einfgen und Vervollstn-
digen 47, 51
Einrckungs- und Forma-
tierungsoptionen 43
erweiterte Filterbefehle 42
erweiterte regulre Aus-
drcke 34, 36
ex-Befehle 18
Falten und Entfalten von
Text 43, 46
Index | 93
Fensterverwaltung 28
Identifikatorsuchbefehle
40
Kommandozeilen-History
36
Kommandozeilenoptio-
nen 27
numerische Werte 54
Programmentwicklungs-
befehle und -optionen 39
Programmierhilfe 40, 43
set-Optionen 59
Skripting 5254, 56, 59
Tag-Stacks und Befehle 37
Vervollstndigungsbefeh-
le 37
W
Wiederherstellungsbefehle
22
Wortabkrzung 9
Wrter 3
Z
Zeichenklassen 14
94 | Index