Kurzeinführung VIM
Index
- Vorbemerkung
- Aufruf des Editors
- Grundlegende Konzepte
- Positionierung des Cursors im Kommando-Modus
- Löschen und Einfügen von Zeichen
- Löschen und Einfügen von Zeilen
- Suchen und Ersetzen
- Kopieren
- Anzeige des Status
- Anzeige und Einstellung von Optionen
- Abspeichern und Beenden
- Auswahl sonstiger nützlicher Kommandos
- Verwendung des visuellen Modus
- Arbeit mit mehreren Puffern und Fenstern
- Syntax Highlighting
Vorbemerkung
Das vorliegende Dokument ist als Einführung in die Nutzung des hauptsächlich von Bram Moolenaar entwickelten, bildschirmorientierten Text-Editors VIM (Vi IMproved) gedacht, der zur Familie der dem UNIX-Standard-Editor Vi ähnlichen Editoren gehört. Die meisten Vi-Kommandos funktionieren beim VIM identisch. Er bietet allerdings gegenüber dem alten Vi eine große Zahl von Erweiterungen und Verbesserungen, die die Arbeit deutlich vereinfachen und effektivieren.Die nachfolgenden Darstellungen beziehen sich primär auf die Version VIM 5.3, gelten aber bis auf wenige Ausnahmen auch für VIM 4.x.
VIM steht für eine breite Palette von Betriebssystem- und Rechner-Plattformen zur Verfügung und wird zunehmend stärker genutzt, auch als Ersatz für den Original-Vi. Bei mehreren Linux-Distributionen versteckt sich hinter dem Kommando vi bereits der VIM und nicht mehr wie früher der Vi-Clone Elvis.
Aufruf des Editors
vim [Optionen] [Dateinamen]Die Wahl des Namens, unter dem man den Editor aufruft, kann dessen Zustand nach dem Start beeinflussen. Dieselbe Wirkung läßt sich durch entsprechende Optionen des Kommandos vim erreichen. Die folgende Tabelle zeigt einige typische Beispiele:
Hinter dem Kommandonamen können Optionen und/oder Dateinamen angegeben werden. Optionen spielen in der Mehrzahl der praktischen Anwendungsfälle keine bzw. eine geringe Rolle. Wir wollen uns daher hier auf zwei Beispiele beschränken:
Kommandoname äquivalente Option bei vim Wirkung view -R Start mit gesetzter Option readonly Dadurch wird das unbeabsichtigte Überschreiben der editierten Dateien verhindert.
gvim -g Start der graphischen Oberfläche (GUI) Im Standardfall nutzt der VIM einen Text-Bildschirm, z.B. ein xterm.
ex -e Start im Ex-Modus, d.h. als zeilenorientierter Editor
Kommandozeilen-Option Bedeutung -b Option binary setzen Dieser Modus gestattet das Editieren beliebiger Binärdateien, allerdings steht kein Hexadezimal-Editor zur Verfügung.
-r Recovery durchführen
Verzichtet der Nutzer auf die Angabe von Argumenten, dann startet VIM mit einem leeren Puffer, d.h., er lädt keine Datei zum Editieren. Ist die Dateiliste dagegen nicht leer, dann wird ihr erstes Element (das nicht selten das einzige überhaupt ist) nach dem Start des Editors automatisch zum aktuellen Dateinamen. Sofern diese Datei im Dateisystem existiert, wird ihr Inhalt in einen Puffer geladen und in einem Fenster zum Editieren bereitgestellt. Eine noch nicht existente Datei legt der Editor allerdings nicht automatisch an. Die Erzeugung neuer Dateien erfolgt erst beim durch ein Nutzerkommando veranlaßten Abspeichern des Inhalts eines Editor-Puffers.
Der Anwender hat die Möglichkeit, die Dateiliste in beiden Richtungen zu durchlaufen und die angegebenen Dateien nacheinander oder gleichzeitig in Fenstern darzustellen und so zu bearbeiten.
Sofern eine Initialisierungsdatei (z.B. $HOME/.vimrc bei UNIX oder $VIM\_vimrc bei DOS) existiert, wird sie während des Starts vom Editor gelesen und als Folge von Ex-Kommandos interpretiert, wobei auf den sonst erforderlichen Doppelpunkt vor dem Kommando verzichtet werden kann. Durch eine Initialisierungsdatei lassen sich ohne manuelle Eingriffe nutzerspezifische Einstellungen vornehmen. Beispielsweise kann man durch
set numberfestlegen, daß vor jeder Zeile des editierten Textes die Zeilennummer angezeigt werden soll.
Grundlegende Konzepte
Der VIM liest jede zu bearbeitende Datei in einen von ihm verwalteten Puffer, der sich entweder komplett im Hauptspeicher oder auch teilweise in einer Swap-Datei befindet. Alle Änderungen werden nur in diesem Puffer vollzogen. Die zu bearbeitende Datei wird so lange nicht verändert, bis der Nutzer das Abspeichern des Inhalts explizit anordnet.Der Name der Swap-Datei entspricht unter UNIX dem Muster .*.sw?. Anstelle des Sterns wird der Name der editierten Datei eingesetzt. Die erste und meist einzige Swap-Datei hat die Endung .swp. Für alle weiteren Swap-Dateien wird der letzte Buchstabe der Endung schrittweise dekrementiert, also .swo, .swn bis .swa. Sofern letztere existiert, wird keine weitere Swap-Datei angelegt.
VIM ist in der Lage, mehrere Puffer gleichzeitig zu verwalten und diese in mehreren Fenstern auf dem Bildschirm darzustellen. Im Standardfall verhält sich der VIM allerdings wie der Original-Vi und verwaltet nur einen Puffer und genau ein Fenster, das mit Ausnahme der untersten Zeile den gesamten Bildschirm überdeckt.
Der untere, standardmäßig genau eine Zeile umfassende Bereich des Editor-Bildschirms dient der Anzeige von Status-Informationen (z.B. Warnungen und Fehlermeldungen, Nummer der aktuellen Zeile und Spalte, aktueller Modus) sowie der Eingabe von Kommandos im Kommandozeilen-Modus. Sind mehrere Fenster aktiv, so wird jeweils an deren unterem Rand eine fensterbezogene Statuszeile dargestellt, die für das unterste Fenster allerdings optional unterdrückt werden kann.
Eine der Stärken des VIM ist seine Recovery-Fähigkeit. Konkret bedeutet
das, daß auch bei Crash der Maschine oder des Editors der letzte Stand der
Editor-Puffer weitestgehend bzw. vollständig wiederhergestellt werden kann,
sofern nicht explizit die Pflege der bereits erwähnten Swap-Datei unterdrückt
wurde. Um das Recovery einzuleiten, ist der VIM mit der Option -r
aufzurufen, z.B.
Alle Vi-Versionen unterscheiden verschiedene Modi. Der jeweils aktive
Modus legt fest, wie die vom Anwender eingegebenen Zeichen interpretiert
werden. Dieses Modus-Konzept, das den Vi sehr deutlich von den meisten anderen
Editoren unterscheidet, ist für Anfänger meist gewöhnungsbedürftig, gestattet
aber dem erfahrenen Bediener ein sehr schnelles und effizientes Arbeiten.
Der VIM kennt sechs Basis-Modi:
Alle Eingaben werden als Editor-Kommandos betrachtet. Es erfolgt also kein
Einfügen der eingegebenen Zeichen in den Editor-Puffer, wie das bei den
meisten anderen Editoren der Fall ist. Nach dem Start befindet man sich in
der Regel im Kommando-Modus.
Dieser Modus dient der Markierung eines zusammenhängenden Teils des
Textes, der dabei optisch hervorgehoben wird. Kommandos zur
Cursor-Positionierung verändern die Grenzen der Markierung. Der
hervorgehobene Bereich läßt sich auf verschiedene Weise bearbeiten, z.B.
löschen, kopieren oder ersetzen.
Er ermöglicht die beispielsweise von MS Windows her bekannte Arbeitsweise,
einen zu verändernden Textabschnitt zu markieren und anschließend durch
Eingabe des neuen Textes zu ersetzen.
Anmerkung: Derselbe Effekt läßt sich auch sehr bequem mit Hilfe des
visuellen Modus erzielen.
Bis auf wenige Ausnahmen werden alle eingegebenen Zeichen in den Puffer
eingefügt. Mit Esc verläßt man den Einfüge-Modus wieder.
Er gestattet die Eingabe einzeiliger Kommandos am unteren Rand des
Editor-Bildschirms. Dazu gehören:
Die folgende Tabelle zeigt die wichtigsten Übergänge vom Kommando-Modus in die
anderen Modi sowie die anschließende Rückkehr in den Kommando-Modus:
Als Zwischenspeicher für verschiedene Daten verwaltet der VIM Register,
von denen eines unbenannt ist. Alle anderen haben einen genau ein Zeichen
langen Namen. Beispielsweise der jeweils zuletzt gelöschte Textteil wird im
unbenannten Register aufbewahrt, so daß er bei Bedarf an beliebigen Stellen
desselben oder auch eines anderen Textes wieder eingefügt werden kann. Der
Nutzer hat aber auch die Möglichkeit, bestimmte Textteile in benannten
Registern zu speichern und später von dort wieder abzurufen. In der Mehrzahl
der Fälle dürfte das unbenannte Register ausreichen.
Interessant ist auch die Eigenschaft des VIM, das zuletzt gegebene Einfüge-
bzw. Löschkommando durch Eingabe eines Punktes (.) im Kommando-Modus
an beliebigen Stellen wiederholen zu können. Dadurch läßt sich häufig der
Aufwand enorm reduzieren.
Ebenfalls sehr wichtig ist der mehrstufige Undo-/Redo-Mechanismus.
Undo gestattet, die letzten (vielleicht sehr komplexen oder
katastrophalen) Änderungen schrittweise rückgängig zu machen. Die maximale
Anzahl von Undo-Schritten wird durch die Option undolevels festgelegt
und beträgt bei UNIX standardmäßig 1000. Unerwünschte Undo-Schritte können
mittels Redo schrittweise rückgängig gemacht werden. Dabei führt der
Editor die durch Undo bereits rückgängig gemachten Operationen erneut aus.
Der VIM ist in der Lage, automatisch Backup-Dateien anzulegen. Das bedeutet,
sofern eine Datei, in die ein Pufferinhalt abgespeichert werden soll, bereits
existiert, wird sie umbenannt, bevor der Editor den Pufferinhalt auf den
Datenträger schreibt. Dadurch wird das Überschreiben des existierenden Inhalts
vermieden. Falls die Option backup gesetzt ist,
wird die umbenannte alte Datei erhalten, d.h. nicht automatisch gelöscht,
nachdem der Pufferinhalt fehlerfrei gesichert werden konnte. In diesem Fall
steht nach der Abspeicherung neben der neuen Version eines Dokuments auch noch
dessen Vorgängerversion im Dateisystem zur Verfügung. Das kann sehr hilfreich
sein, wenn man z.B. aus Versehen umfangreiche Modifikationen an einer Datei
vorgenommen hat oder einfach nur mittels des Kommandos diff
feststellen möchte, ob man auch genau die beabsichtigten Änderungen erzielt
hat.
Generell ist zu den VIM-Kommandos anzumerken, daß viele von ihnen auf mehrere
Zeichen bzw. Zeilen wirken können. Dazu gibt man oft vor dem eigentlichen
Kommando eine Zahl ein. Entfällt diese, so nimmt der Editor in der Regel eine
Eins an. In der vorliegenden Beschreibung wird eine solche Zahl durch
durch den Präfix num symbolisiert.
Ex-Kommandos beziehen sich häufig auf einen Zeilenbereich
(range). Dieser läßt sich auf unterschiedliche Weise angeben. Die genaue
Syntax würde den Rahmen der vorliegenden Abhandlung sprengen. Sie sollte bei
Bedarf der Online-Hilfe des VIM entnommen werden (:help :range).
Eine sehr einfache Möglichkeit der Beschreibung von Zeilen bzw. Zeilenbereichen
besteht in der Angabe von Zeilennummern. Hier einige Beispiele:
Die Namen der meisten Ex-Kommandos müssen nicht voll ausgeschrieben werden, da
der Editor die betreffenden Kommandos bereits eindeutig identifizieren kann,
sobald die ersten n Zeichen ihres Namens angegeben wurden, wobei die
Zahl n vom jeweiligen Kommando abhängt. In der nachfolgenden Diskussion
sowie im Online-Handbuch des VIM werden die optionalen Buchstaben eines
Kommando-Namens in der Regel in eckige Klammern eingeschlossen. So besagt z.B.
die Notation co[py], daß das Kommando copy bereits nach
Eingabe von co eindeutig spezifiziert ist (n hat hier also den
Wert 2).
Der VIM unterstützt eine automatische Vervollständigung verschiedener Elemente
der Ex-Kommandozeile. Dies betrifft die Namen von Kommandos, Optionen, Dateien
und Tags. Durch Eingabe des über die Option wildchar festgelegten
Zeichens (standardmäßig der Tabulator) wird das vor dem Cursor befindliche
Muster (meist der Anfang eines Namens) so weit wie möglich vervollständigt.
Ctrl-D listet alle Namen auf, die zu dem vor dem Cursor stehenden
Muster passen. Weitere Details sind in der Online-Hilfe zu finden
(:help cmdline-completion).
Nachfolgend wird mehrfach der Begriff Whitespace-Zeichen verwendet.
Darunter versteht man Tabulatoren und Leerzeichen.
Beispiele:
Beispiel:
Folgende Text-Elemente werden akzeptiert:
Marke ist ein einzelner Buchstabe, wobei sich Kleinbuchstaben immer
auf den aktuellen Editor-Puffer beziehen, wogegen Großbuchstaben für alle
aktuell geladenen Puffer global gültig sind. Das Setzen einer Marke
verändert die Cursor-Position nicht.
Beispiel:
Statt x kann auch die Del-Taste genutzt werden.
Hier einige Beispiele für die Anwendung der beiden genannten Operatoren, wobei
als Startpunkt immer die aktuelle Cursor-Position verwendet wird:
Hinweis:
Wie bereits erwähnt, stehen im Einfüge-Modus die Cursor- und Bild-Tasten sowie
Home und End zur Positionierung des Cursors zur Verfügung.
Die Rückschritt-Taste (BackSpace) löscht im Einfüge-Modus immer ein
Zeichen rückwärts, im Standardfall allerdings nur, wenn es sich um neu
eingegebene Zeichen handelt. Nach Setzen einer speziellen Option (:set
bs=2) kann die Rückschritt-Taste alle Zeichen inkl. Zeilentrenner löschen.
Beispiele:
Suchmuster werden generell als reguläre
Ausdrücke interpretiert. Normale Suchoperationen können aber ohne
dieses Wissen ausgeführt werden. Besteht das Suchmuster z.B. nur aus Buchstaben
und Ziffern, dann sucht der VIM genau nach der spezifizierten Zeichenkette.
Dieses Kommando ersetzt im angegebenen Zeilenbereich das Auftreten des
Musters alt gegen die Zeichenkette neu. Das Kommando ist auf
Grund der Nutzung regulärer Ausdrücke sehr mächtig. Der Modifikator
beeinflußt die genaue Wirkungsweise der Substitution. So bewirkt z.B. der
Modifikator g, daß alle Vorkommen von alt ersetzt
werden, nicht nur die jeweils ersten einer Zeile.
Anwendungsbeispiele finden sich im Abschnitt über reguläre Ausdrücke.
Anmerkung: Lösch-Operationen, z.B. das Kommando dd, kopieren
standardmäßig den jeweils gelöschten Text ebenfalls in das unbenannte
Register.
Der durch Bereich beschriebene Zeilenbereich wird
hinter der durch nach spezifizierten Zeile in den
Text eingefügt.
Beispiel: ruler
Beispiel: undolevels
Beispiel: helpfile
Beispiele:
Hinweis: Das abschließende Fragezeichen ist nur bei
booleschen Optionen erforderlich.
Beispiel:
Ausgewählte Optionen (zusammen mit ihren Abkürzungen, sofern solche existieren)
und deren Bedeutung:
Durch Voranstellen von no vor eine boolesche Option wird diese
ausgeschaltet, z.B.
Sofern das letzte Fenster geschlossen wurde, wird der
Editor beendet.
Der Dateiname ist zwingend anzugeben.
Sofern der Text nicht modifiziert wurde, kann das Ausrufezeichen
entfallen. Falls mehrere Fenster offen sind, wird nur das aktuelle
Fenster geschlossen, der Editor aber nicht beendet.
Sofern kein Bereich angegeben wird, beziehen sich diese
beiden Kommandos auf den gesamten Text (wie bei %
bzw. 1,$).
Anwendungsbeispiele finden sich im Abschnitt über reguläre Ausdrücke.
Beispiel:
Beispiel:
Wird noch eine Datei als Argument angegeben (
Das Syntax Highlighting bietet die Möglichkeit, verschiedene Teile eines Textes
durch unterschiedliche Farben oder Fonts darzustellen und so optisch
hervorzuheben bzw. leichter unterscheidbar zu machen. Derartige Textteile
können z.B. Schlüsselwörter einer Programmiersprache oder Zeichenfolgen, die
einem bestimmten Muster entsprechen, sein. Syntax Highlighting kann
beispielsweise einem Programmierer helfen, bestimmte lexikalische oder
syntaktische Fehler in einem Quelltext einfacher und schneller zu erkennen.
Das konkrete Highlighting-Format wird meist an Hand der Dateiendung und
manchmal durch Analyse der ersten Zeile der Datei ermittelt.
Beispiel:
Bei Verwendung der GUI-Version des VIM (gvim) kann man das
gewünschte Highlighting-Format über ein Menü auswählen.
vim -r intro.html
zur Wiederherstellung der Datei intro.html. Das Recovery stützt
sich auf die Swap-Datei.
Als Spezialfall des Einfüge-Modus ist der Ersetzungs-Modus (Replace
mode) zu sehen, in dem die neu eingegebenen Zeichen existierende Zeichen
des Textes überschreiben, es sei denn, es gibt an der aktuellen Cursor-Position
keine alten Zeichen mehr. Dann wird eingefügt.
Nach der Ausführung des Kommandos verläßt der Editor den
Kommandozeilen-Modus wieder.
Ex-Kommandos
:
Such-Kommandos
/ ?
Filter-Kommandos
!
Wechsel zum
durch
Rückkehr zum Kommando-Modus
Einfüge-Modus
Kommandos zum Einfügen von Zeichen
und Zeilen
i a
I A
c C
o O
Esc
Ersetzungs-Modus
R
Esc
Kommandozeilen-Modus
: /
? !
visuellen Modus
v (zeichenweise Markierung)
V (zeilenweise Markierung)
Ctrl-V (Markierung rechteckiger Blöcke)
Select-Modus
gh (zeichenweise Markierung)
gH (zeilenweise Markierung)
gCtrl-H (Markierung rechteckiger Blöcke)
Ex-Modus
Q
vi bzw. visual
Die Angabe eines Bereichs (nachfolgend durch Bereich symbolisiert) ist
optional. Wird sie weggelassen, beziehen sich die meisten Kommandos auf die
aktuelle Zeile. Sofern dies bei einem Kommando nicht der Fall ist, werden wir
darauf explizit hinweisen.
12
Zeile 12
10,16
Zeilen 10 bis 16
.
(Punkt)
aktuelle Zeile
$
letzte Zeile
%
alle Zeilen (äquivalent zu 1,$)
Positionierung des Cursors im Kommando-Modus
Die Cursor- und Bild-Tasten (PageUp, PageDown) sowie
Home und End haben die übliche Wirkung. Im Unterschied zum
Original-Vi sind diese Tasten auch im Einfüge-Modus nutzbar.
num G
Sprung zu bestimmter Zeile
25G für Zeile 25
G ohne num für die letzte Zeile
num |
Sprung zu bestimmter Spalte
10| für Spalte 10
| ohne num für die erste Spalte
0
(Zahl Null)
Sprung zum Zeilenanfang (Spalte 1)
$
Sprung zum Zeilenende (letzte Spalte)
w
Wort vorwärts
b
Wort rückwärts
W
WORT (Folge von Nicht-Whitespace-Zeichen) vorwärts
B
WORT (Folge von Nicht-Whitespace-Zeichen) rückwärts
H
Cursor an den Anfang der obersten Zeile eines Fensters
positionieren
M
Cursor an den Anfang der in der Mitte eines Fensters
befindlichen Zeile positionieren
L
Cursor an den Anfang der untersten Zeile eines Fensters
positionieren
Ctrl-F
eine Seite vorwärts blättern
Ctrl-B
eine Seite rückwärts blättern
Ctrl-D
eine halbe Seite vorwärts blättern
Ctrl-U
eine halbe Seite rückwärts blättern
Ctrl-E
eine Zeile vorwärts scrollen
Ctrl-Y
eine Zeile rückwärts scrollen
zt
aktuelle Zeile an den oberen Fensterrand verschieben
zz
aktuelle Zeile in die Mitte des Fensters verschieben
zb
aktuelle Zeile an den unteren Fensterrand verschieben
%
sucht für bestimmte Text-Elemente, die unter oder hinter
dem Cursor stehen, den bzw. die zugehörigen Partner
nach rechts zum nächsten Zeichen gehen
nach rechts bis vor das nächste Zeichen gehen
nach links zum nächsten Zeichen gehen
Setzen einer Marke an der aktuellen Cursor-Position
ma setzt Marke a
(Accent grave)
Sprung zu einer vorher gesetzten Marke
(Acccent aigu)
Sprung zum ersten Nicht-Whitespace-Zeichen der durch
Marke markierten Zeile
Löschen und Einfügen von Zeichen
Allgemein gilt, daß die zu den sog. Operatoren gehörenden Kommandos d
und c denjenigen zusammenhängenden Teil des Textes löschen bzw.
ersetzen, dessen Anfang und Ende durch die beiden vor und nach der
Cursor-Bewegung aktuellen Cursor-Positionen beschrieben wird. Die
Cursor-Bewegung kann durch ein beliebiges Kommando zur Positionierung des
Cursors (z.B. auch ein Such-Kommando) erfolgen. Dabei unterscheidet man
zwischen zeilen- und zeichenweisen Bewegungen. Letztere können den Endpunkt
ein- oder ausschließen. Zeilenweise Bewegungen schließen dagegen den Endpunkt
immer ein. Die Details sowie einige Ausnahmen sind dem Online-Handbuch zu
entnehmen (:help deleting).
i
Einfügen vor dem aktuellen Zeichen
a
Einfügen nach dem aktuellen Zeichen
I
Einfügen am Zeilenanfang, konkret vor dem ersten
Nicht-Whitespace-Zeichen
A
Anfügen am Zeilenende
x
ab Cursor ein bzw. mehrere Zeichen nach rechts löschen
X
ab Cursor ein bzw. mehrere Zeichen nach links löschen
D
Löschen ab Cursor bis zum Zeilenende
C
Ersetzen ab Cursor bis zum Zeilenende
J
Verbinden einer Zeile mit ihrem Nachfolger
d Cursor-Bewegung
Löschen des durch eine Cursor-Bewegung spezifizierten
Textes
c Cursor-Bewegung
Ersetzen des durch eine Cursor-Bewegung spezifizierten
Textes
Durch Angabe eines numerischen Präfixes num vor den Kommandos
dw, cw, db und cb läßt sich die jeweilige
Operation num Mal hintereinander anwenden. So kann man beispielsweise
durch das Kommando 3dw drei Wörter nach rechts löschen, da das
Kommando dw drei Mal hintereinander ausgeführt wird.
dw
Löschen nach rechts bis vor den Anfang des folgenden
Wortes
cw
Ersetzen nach rechts bis zum Ende des aktuellen Wortes
db
Löschen nach links bis zum Anfang des aktuellen Wortes
cb
Ersetzen nach links bis zum Anfang des aktuellen Wortes
d0
Löschen nach links bis zum Zeilenanfang
c0
Ersetzen nach links bis zum Zeilenanfang
Anstelle der Operatoren kann man auch den sehr bequemen visuellen Modus verwenden.
Löschen und Einfügen von Zeilen
O
(Großbuchstabe O)
Einfügen einer Leerzeile oberhalb der aktuellen Zeile
o
(Kleinbuchstabe o)
Einfügen einer Leerzeile unterhalb der aktuellen Zeile
Löschen mehrerer Zeilen ab der aktuellen Position
Löschen eines Zeilenbereichs
:10d (Zeile 10)
:50,$d (von Zeile 50 bis zum
Textende)
Suchen und Ersetzen
Vorzugsweise sucht der VIM zyklisch, stoppt also nicht am Dateiende. Das
Überschreiten des Dateiendes wird je nach Suchrichtung durch die Meldung
search hit TOP, continuing at BOTTOM
bzw.
search hit BOTTOM, continuing at TOP
im Status-Bereich angezeigt.
Hinweis:
/Muster
Vorwärtssuche eines Musters
?Muster
Rückwärtssuche eines Musters
*
Vorwärtssuche des Wortes unter dem Cursor
#
Rückwärtssuche des Wortes unter dem Cursor
n
Wiederholung der letzten Suche
N
Wiederholung der letzten Suche in umgekehrter Richtung
r
Ersetzen des aktuellen Zeichens
R
Umschalten in den Ersetzungs-Modus (Replace)
xp
Vertauschen eines Zeichens mit seinem Nachfolger
ddp
Vertauschen einer Zeile mit ihrem Nachfolger
~
(Tilde)
Umwandlung von Klein- in Großbuchstaben und umgekehrt
Substitution innerhalb eines Zeilenbereichs
Die Suchmuster sowie die durch einen Doppelpunkt eingeleiteten Ex-Kommandos
werden jeweils in eine eigene History-Liste eingetragen, um sie später
in identischer oder modifizierter Form leicht wiederverwenden zu können. Das
Durchlaufen der History-Listen geschieht mit Hilfe der Cursor-Tasten
Up und Down. Innerhalb eines Eintrags kann man sich mit Hilfe
der beiden anderen Cursor-Tasten (Left und Right) bewegen.
BackSpace löscht das links vom Cursor stehende Zeichen. Buchstaben,
Ziffern und Sonderzeichen werden an der Cursor-Position eingefügt.
Kopieren
Kopieren mehrerer Zeilen in das unbenannte Register
y$
Kopieren des Zeilenrestes in das unbenannte Register
p
(Kleinbuchstabe p)
Einfügen des Inhalts des unbenannten Registers hinter der
aktuellen Stelle
P
(Großbuchstabe p)
Einfügen des Inhalts des unbenannten Registers vor der
aktuellen Stelle
Kopieren eines Zeilenbereichs
Anzeige des Status
Ctrl-G
aktuellen Dateinamen, Cursor-Position (sofern Option
ruler nicht aktiv ist) und Datei-Status
([Modified], [readonly]) anzeigen
Zahl Ctrl-G
wie Ctrl-G, aber den vollen Pfad des Dateinamens
anzeigen. Falls die Zahl größer als 1 ist, wird
zusätzlich die Puffer-Nummer ausgegeben.
gCtrl-G
Informationen über die aktuelle Cursor-Position anzeigen
(logische und physische Spalte, Zeile, Zeichenposition im
Text)
Anzeige und Einstellung von Optionen
Der VIM kennt drei Arten von Optionen:
Die folgende Tabelle enthält einige nützliche Kommandos:
boolesche Optionen
können nur ein- oder ausgeschaltet werden
numerische Optionen
haben einen numerischen Wert
Zeichenketten-Optionen
haben eine Zeichenkette als Wert
:se[t]
Anzeigen aller Optionen, die von ihrem Default-Wert
abweichen
Anzeigen aller Optionen mit Ausnahme der Terminal-Optionen
Setzen boolescher Optionen bzw. Anzeige des Wertes von
numerischen und Zeichenketten-Optionen
Setzen des Wertes von numerischen und
Zeichenketten-Optionen
set undolevels=2000
set helpfile=$VIM/doc/help.txt
Anzeige des Wertes einer Option
set binary?
Repräsentation aller Tabulatoren durch ^I
(Ctrl-I) und Anzeige der Zeilenendezeichen als $
Voranstellen der Zeilennummer vor jede Textzeile
Anzeige des aktuellen Modus im Status-Bereich, sofern sich
der Editor im Einfüge-, Ersetzungs- oder visuellen Modus
befindet
maximale Anzahl von Undo-Schritten
automatisches Einrücken in neu erzeugten Zeilen im
Einfüge-Modus
permanente Anzeige der aktuellen Zeilen- und Spaltennummer
in der Statuszeile
einige Zeichen erhalten bei Suchmustern und
Ersetzungs-Zeichenketten eine Sonderbedeutung
Nichtbeachtung Groß-/Kleinschreibung bei der Suche
Ignorieren der Option ignorecase, sofern das
Suchmuster mindestens einen Großbuchstaben enthält
beim Abspeichern Backup-Datei anlegen und erhalten (d.h.
nicht löschen, nachdem der Pufferinhalt erfolgreich
gesichert worden ist)
Abspeichern und Beenden
ZZ
Abspeichern des Editor-Puffers, sofern Änderungen
vorgenommen wurden, und nachfolgendes Schließen des
Fensters
:w[rite]
Abspeichern des Editor-Puffers in die aktuelle Datei
Abspeichern des Editor-Puffers in eine spezifierte Datei
Abspeichern eines Zeilenbereichs
:e[dit] Datei
Editieren einer anderen Datei, sofern der aktuelle Puffer
nicht modifiziert wurde
q!
Beenden des Editors ohne Speichern
:w[rite]!
Überschreiben einer Read-Only-Datei
Auswahl sonstiger nützlicher Kommandos
:h[elp]
:h[elp] Thema
Online-Hilfe aktivieren
:ve[rsion]
Anzeige der Editor-Version
u
Undo für das jeweils letzte Kommando (mehrstufig möglich)
Ctrl-R
:red[o]
Redo (Undo der Undo-Operation; ebenfalls mehrstufig
möglich)
U
Undo aller Änderungen, die zuletzt in einer Zeile
vorgenommen wurden
.
(Punkt)
Wiederholung des letzten Einfüge- bzw. Lösch-Kommandos
:ar[gs]
:files
Anzeige der Dateiliste
:n[ext]
Übergang zur nächsten Datei der Liste
:N[ext]
Übergang zur vorherigen Datei der Liste
:rew[ind]
Übergang zur ersten Datei der Liste
:la[st]
Übergang zur letzten Datei der Liste
:r[ead] Datei
Einlesen einer Datei hinter die aktuelle Zeile
:0r[ead] Datei
Einlesen einer Datei vor die erste Zeile eines Textes
wiederholte Anwendung eines Ex-Kommandos auf einen
Zeilenbereich
g wendet das jeweilige Ex-Kommando auf alle
Zeilen des Bereichs an, die dem Muster entsprechen.
v wendet dagegen das Ex-Kommando auf alle Zeilen
an, die dem Muster nicht entsprechen.
q Register
Beginn der Aufzeichnung einer Tastenfolge in einem Register
qa (Aufzeichnung in Register a starten)
q
Ende der Aufzeichnung einer Tastenfolge
@ Register
Ausführen des Inhalts eines Registers
Ctrl-A
Zahl Ctrl-A
Addition einer Eins bzw. der angegebenen Zahl zu der Zahl
unter dem Cursor
Ctrl-X
Zahl Ctrl-X
Subtraktion einer Eins bzw. der angegebenen Zahl von der
Zahl unter dem Cursor
Verwendung des visuellen Modus
Ein besonders elegantes Arbeiten ist mit dem visuellen Modus möglich. Mehrere
der mit den oben gezeigten Kommandos erreichbaren Wirkungen lassen sich im
visuellen Modus wesentlich einfacher realisieren. Nach der Markierung eines
Textblocks mit
können auf ihm u.a. folgende Operationen ausgeführt werden:
v
zeichenweise
V
zeilenweise
Ctrl-V
blockweise
!Filter
Filtern durch ein externes Programm
!sort bewirkt eine Sortierung des markierten Bereichs
durch das externe Kommando sort.
:
Übergang zum Ex-Modus. Dabei werden automatisch die beiden
speziellen Marken '< und '>, die den
Anfang bzw. das Ende des markierten Bereichs kennzeichnen,
auf die Kommandozeile übernommen.
<
Verschieben nach links (um die durch die Option
shiftwidth bestimmte Anzahl von Positionen)
>
Verschieben nach rechts (um die durch die Option
shiftwidth bestimmte Anzahl von Positionen)
c C
r R
Substituieren, d.h. Löschen des alten Inhalts und Übergang
zum Einfügen
d D
x X
Löschen
J
Verbinden zu einer Zeile
gq
(in älteren VIM-Versionen auch Q)
Formatieren (Zeilen auf annähernd gleiche Länge bringen)
U
Umwandeln der Klein- in Großbuchstaben
u
Umwandeln der Groß- in Kleinbuchstaben
~
(Tilde)
Umwandeln der Groß- in Kleinbuchstaben und umgekehrt
y Y
Kopieren ins unbenannte Register
o
Vertauschen der Anfangs- und Ende-Markierung
Arbeit mit mehreren Puffern und Fenstern
Da die Register nicht puffer-/fensterbezogen sind, bieten sie sich zum
Übertragen von Text zwischen Puffern/Fenstern an. So könnte man in einem
Fenster einen bestimmten Text in ein Register speichern, dann in ein anderes
Fenster wechseln und den Registerinhalt dort an einer beliebigen Stelle wieder
einfügen.
:sp[lit]
horizontales Teilen des aktuellen Fensters
Ctrl-W Ctrl-W
Ctrl-W w
Wechsel des aktuellen Fensters
:ba[ll]
pro Puffer genau ein Fenster auf dem Bildschirm darstellen
:wa[ll]
alle modifizierten Puffer ins Dateisystem schreiben, ohne
den Editor zu beenden
:xa[ll]
alle modifizierten Puffer ins Dateisystem schreiben und
Editor beenden
:qa[ll]
alle Fenster schließen und den Editor beenden, sofern kein
Puffer modifiziert wurde
Syntax Highlighting
Ab Version 5.0 verfügt der VIM über ein durch Konfigurationsdateien anpaßbares,
flexibles Syntax Highlighting. Für eine sehr große Anzahl von Sprachen
bzw. Formaten (C, C++, Java, TeX, HTML, Shell, Maple, ...) sind bereits in
der Standard-Distribution des VIM geeignete Syntax-Dateien enthalten, die vom
Anwender unverändert genutzt bzw. bei Bedarf erweitert werden können.
:sy[ntax] on
automatisches Syntax Highlighting unter Verwendung der zur
VIM-Distribution gehörenden Syntax-Dateien einschalten
:sy[ntax] off
Syntax Highlighting ausschalten
:so[urce] Syntax-Datei
gezielte Auswahl eines bestimmten Highlighting-Formats
Sofern die zur VIM-Distribution gehörenden Syntax-Dateien unter
$VIM/syntax/Format.vim stehen, was dem Standard
entspricht, so aktiviert dieses Kommando für den aktuellen Puffer das
Syntax Highlighting für die Programmiersprache C. Um den vollen
Funktionsumfang zur Verfügung zu haben, empfiehlt es sich, zusätzlich (am
besten vorher) das automatische Syntax Highlighting durch
:syntax on einzuschalten.





