Vim – Das Multitalent auf allen Plattformen

Früher oder später kommt man an einem Texteditor innerhalb der Konsole nicht vorbei: beim editieren von Konfigurationsdateien, beim Verfassen einer Git Commit-Message oder zum schnellen ändern einer Datei direkt auf dem Server. Mein Lieblings-Editor für solche Fälle ist der Vim.

Vim („Vi improved“) ist eine Weiterentwicklung des Texteditors vi. Vim wurde 1991 veröffentlicht, vi gibt es schon seit den 70er Jahren. Die Bedienung unterscheidet sich stark von anderen Editoren. Vim wird vollständig mit der Tastatur bedient. Bei den GUI-Varianten sind zwar viele Befehle auch mit der Maus erreichbar, nach einer gewissen Einarbeitungszeit sorgt aber gerade die Arbeit ohne Maus für eine höhere Produktivität.

Der Einstieg in den Editor wird nicht nur durch die Tastaturbedienung erschwert, sondern auch aufgrund der Besonderheit, dass Vim unterschiedliche Modi für die Eingabe und das Bearbeiten von Texten kennt. In jedem Modus reagiert Vim anders auf den gleichen Tastendruck.

Anderseits überzeugt Vim durch seine unglaubliche Funktionsvielfalt und die Tatsache, dass er für alle gängigen Plattformen vorhanden ist und auf vielen UNIX-Artigen Systemen standardmäßig installiert ist.

Die Modi des Texteditors

Kommando- oder Normal-Modus

Nach dem Starten befindet man sich im Kommando-Modus. Man kann keinen Text eingeben, sondern nur Kommandos wie Ausschneiden oder Einfügen ausführen oder den Cursor innerhalb der Datei positionieren.

Kommandozeilen-Modus

Gibt man einen Doppelpunkt ein, gelangt man in den Kommandozeilen-Modus. Nun nimmer der Editor sogenannte Ex-Kommandos entgegen. Dies sind beispielsweise Befehle zum Öffnen, Speichern, Suchen, Ersetzen oder Konfigurieren. Nach dem Bestätigen des Befehls oder den Abbruch mittels der Escape-Taste (auch Ctrl+C) gelangt man zurück in den Normal-Modus.

Einfüge-Modus

Nach dem Tippen der i-Taste kann Text vor der aktuellen Cursorposition eingegeben werden. Zurück zum Normalmodus gelangt man wieder über Esc oder Ctrl+C.

Visueller Modus

Im visuellen Modus kann Text markiert werden, um ihn anschließend zeilen- oder blockweise einzurücken, in Kleinbuchstaben umzuwandeln oder andere Operationen auszuführen.

Vim herunterladen und starten

Vim kann für verschiedene Plattformen und in unterschiedlichen Varianten auf der Vim-Projektseite heruntergeladen werden.

Die im Terminal unter Mac OS X 10.6.5 verfügbare Version ist 7.2. Diese Information erscheint direkt nach dem Starten der Anwendung:

$ vim

Dem Editor liegt auch ein gutes Einsteiger-Tutorial bei. Es ist erreichbar über das nachfolgende Terminal-Kommando:

$ vimtutor

Aufruf von vim

Der Anwendung können beim Starten verschiedene Parameter übergeben werden:

$ vim [Optionen] [Datei1 Datei2 Datei3 ..]
Option Beschreibung
-R Öffnen einer Datei im Readonly-Modus.
$ view [Datei] hat die gleiche Wirkung.
+n Öffnet die Datei bei der Zeilennummer n.
+ Öffnet die Datei und springt direkt zur letzten Zeile.
+/muster öffnet datei beim ersten Auftreten von muster
+cmd Das Ex-Kommando cmd wird ausgeführt.
Beispiel: $ vim +$ datei.txt springt an das Ende der Dat

Dateien öffnen, einfügen, speichern und Vim beenden

Den Kommandozeilenmodus erreicht man durch Tippen des Doppelpunktes. Nachfolgend sind einige Ex-Kommandos für Grundfunktionalitäten aufgelistet:

Kommando Beschreibung
:r [Datei] Einlesen der Datei nach der aktuellen Cursorposition.
Zum Einfügen vor der ersten Zeile: :0r [Datei].
ZZ (ohne Doppelpunkt!)
:wq
Datei speichern beenden.
:w [Datei]
:w! [Datei]
Speichern, der Dateiname ist dabei optional. Befehl mit Ausrufezeichen steht für
„force write“, dabei wird die Datei auch gespeichert, wenn sie schreibgeschützt ist
oder vim im readonly-Modus läuft. Kann aber auch zum Speichern unter Angabe eines
anderen Dateinamens als beim Starten angegeben verwendet werden.
:n
:n!
Übergang zum nächsten Puffer (Datei die beim Starten mit angegeben wurde).
Angabe mit Ausrufezeichen verwirft evtl. Änderungen.
:prev
:prev!
Übergang zum vorherigen Puffer.
:rew
:rew!
:first
Springen zum ersten Puffer in der Liste
:buffers Anzeige aller Puffer
:[n]^ Sprung zum Puffer n. Die Zahl kann dem Ergebnis von :buffer entnommen werden
:args Auflistung aller Parameter beim Starten des Texteditors.
:q [Datei]
:q! [Datei]
Beenden des Vim

Wechseln in den Einfügemodus

Beim Starten befindet sich Vim standardmäßig im Kommandomodus. Erst nach dem Tippen einer der folgenden Tasten kann Text eingefügt werden.

Kommando Beschreibung
a Einfügen rechts vom Cursor (append)
A Anhängen an das Zeilenende (append after line)
i Einfügen vor dem Cursor (insert)
I Einfügen vor dem sichtbaren Zeilenanfang (insert before line)
o Einfügen nach der aktuellen Zeile
O Einfügen vor der aktuellen Zeile
S Zeile löschen und Text ersetzen

Modifizieren im Einfügemodus

Kommando Beschreibung
Ctrl+A Zuletzt in Einfügemodus geschriebene Zeichenfolge erneut einfügen
Ctrl+T Einrückung erhöhen (Tabulator)
Ctrl+D Einrückung verringern
Ctrl+W Löschen des zuletzt eingegebene Wortes

Positionieren

Kommando Beschreibung
h, j, k, links, unten, oben, rechts
+ Zum ersten Zeichen der folgenden Zeile
- Zum ersten Zeichen der vorangegangenen Zeile
e / E An das Wortende (ohne/mit Satzzeichen)
w / W Wortweise vorwärts (ohne/mit Satzzeichen)
b / B Wortweise rückwärts
0 Zum Zeilenanfang springen
$ Zum Zeilenende springen
Ctrl+F Eine Seite vorwärts blättern
Ctrl+B Eine Seite zurück blättern

Editieren

Das allgemeine Format für die Editierbefehle lautet: [n]Befehl[Positionierbefehl]

Kommando Beschreibung
dd Zeile löschen. 2dd löscht zwei Zeilen.
D Löschen ab aktueller Position bis Zeilenende
x Löschen unterhalb des Cursors
X Löschen links vom Cursor
>> Einrücken nach rechts
<< Einrücken nach links

Suchbefehle und Optionen

Kommando Beschreibung
/Muster Suche nach dem regulären Ausdruck Muster
?/Muster Wie /Muster, nur rückwärts
n Wiederholen der Suche mit dem gleichen Muster in gleicher Richtung
N Wiederholen der Suche mit dem gleichen Muster in umgekehrter Richtung
* Suchen nach dem Wort unterhalb des Cursors
* Suchen nach dem Wort unterhalb des Cursors (vorwärts)
# Suchen nach dem Wort unterhalb des Cursors (rückwärts)

Rückgängig machen und Wiederholen

Kommando Beschreibung
u Letzten Befehl rückgängig machen
U Zuletzt geänderte Zeile wiederherstellen
. Letzte Anderungen wiederholen

Der visuelle Modus

Im visuellen Modus können größere Textabschnitte markiert werden, um auf diesen Bereich bestimmte Editierkommandos anzuwenden. Den folgenden Kommandos müssen Positionierbefehle angehangen werden. v+ markiert beispielsweise die aktuelle Zeile, mit + wird dabei zum Zeilenende gesprungen.

Kommando Beschreibung
v Zeichenweise markieren
V Zeilenweise markieren
Esc
Ctrl+C
Visuellen Modus verlassen

Kopieren und Einfügen

Nach dem markieren eines Textabschnittes können im Kommandomodus die Tasten y (yank, kopieren) und p (paste, einfügen) benutzt werden.

Vim konfigurieren

Einstellungen wie die Breite eines Tabulators, die Anzeige der Zeilennummern, das Hervorheben der Suchergebnisse und
vieles andere geschieht am einfachsten in der Datei .vimrc im Homeverzeichnis des jeweiligen Benutzers.
Die meisten Optionen werden mit einem set eingeleitet und funktionieren auch im Kommandozeilenmodus.
Um für die GUI-Variante MacVim-Version eine separate
Konfigurationsdatei zu benutzen, muss die Datei .gvimrc angelegt werden.

Beispieldatei ~/.vimrc:

" Einrückung an vorheriger Zeile ausrichten
set autoindent

" Interner Zeichensatz
set encoding=utf-8

" Bei Eingabe Tabulatoren durch Leerzeichen ersetzen
set expandtab

" Lange Zeilen umbrechen
set linebreak

" Zeilennummern anzeigen
set number

" Cursorposition (Zeile/Spalte) anzeigen
set ruler

" Schrittweite bei automatischer Einrückung
set shiftwidth=4

" Kommandos anzeigen, nicht blind eingeben
set showcmd

"Beim Schreiben korrespondierende Klammer anzeigen
set showmatch

" Modus anzeigen (insert, etc.)
set showmode

" Tabulator entspricht vier Leerzeichen
set softtabstop=4

" Abstand der Tabulator-Stopps
set tabstop=4

" Textbreite in Zeichen
set textwidth=80

"Fenstertitel setzen
set title

"lange Zeilen umbrechen
set wrap

" Suchergebnisse hervorheben (invertieren)
set hlsearch

"Suche geht von Dateiende zu Dateianfang über
set wrapscan

" Toolbar in GUI-Variante deaktivieren
set guioptions-=T

" Farbschema für die GUI-Variante setzen
colorscheme elflord

" Erkennung der Dateien
filetype on
filetype indent on
filetype plugin on

Abkürzungen

Abkürzungen sind praktisch, um sich Tipparbeit bei häufig verwendeten Texten zu sparen. Der folgende Eintrag in der Datei ~/.vimrc sorgt dafür, dass die Zeichenkette „mfg“ in „Mit freundlichen Grüßen“ umgewandelt wird:

Abkürzungen
:ab mfg Mit freundlichen Grüßen

Dateien vergleichen

Um den Inhalt zweier Dateien miteinander vergleichen zu können, bedient man sich dem Befehl

$ vimdiff datei1.txt datei2.txt

Die Unterschiede werden dann in einem gespaltenem Fenster hervorgehoben.

Weiterführende Informationen

Dieser Artikel stellt nur einen sehr kleinen Ausflug in die Welt des Vim dar. Neben der Projektseite des Texteditors sind im Folgenden noch einige weitere Link-Empfehlungen zu finden:

Schreibe einen Kommentar

Pflichtfelder sind mit * markiert.


− 3 = 5