17Vim
Im Mittelpunkt dieses Kapitels stehen der Editor Vi und dessen Open-Source-Implementierung Vim (Vi Improved). Diese Editoren sind – ebenso wie der im nächsten Kapitel vorgestellte Editor Emacs – relativ schwer zu erlernen. Dieser Aufwand lohnt sich nur, wenn Sie ständig Text, Programmcode, HTML-Dokumente etc. bearbeiten, wenn ein Texteditor also ein ständiges und unverzichtbares Werkzeug für Sie ist. Wenn Sie zu dieser Zielgruppe gehören, bieten Vi und Emacs Ihnen schier unendlich viele Spezialfunktionen.
Bleibt noch die Königsfrage: Vi oder Emacs? Beide Programme sind Urgesteine der Unix/Linux-Geschichte. Beide bieten unzählige Spezialfunktionen, z.B. die automatische Syntaxhervorhebung für zahllose Programmiersprachen und Dokumenttypen oder das Suchen und Ersetzen mit regulären Ausdrücken. Über die Frage, welches Programm nun besser ist, wurden im Internet schon endlose Diskussionen geführt. Wirklich objektiv kann auch ich die Frage nicht beantworten: Da ich sämtliche Auflagen dieses Buchs mit Emacs-Varianten verfasst habe (dieses Kapitel natürlich ausgenommen, so viel Vi muss sein!), ist mir der Emacs viel vertrauter als irgendwelche Vi-Varianten.
Persönlich erscheint mir der Editor Emacs intuitiver zu bedienen und einfacher zu erlernen. Beim Vi treibt einen die Unterscheidung zwischen dem Standard- und dem Einfügemodus anfänglich leicht zum Wahnsinn. Für Vi & Co. spricht andererseits, dass das Programm ein De-facto-Standard unter Unix/Linux ist. Es beansprucht wesentlich weniger Ressourcen und steht selbst auf minimalen Rescue-Systemen zur Verfügung, wo für den Emacs kein Platz mehr ist. Echte Unix/Linux-Freaks sollten ohnedies beide Editoren in ihren Grundfunktionen beherrschen – und viel mehr vermittle ich in diesem Buch nicht.
Der ursprüngliche Editor Vi ist ein kommerzielles Programm und steht daher unter Linux nicht zur Verfügung. Vim ist dagegen ein Open-Source-Programm, das zu Vi kompatibel ist und darüber hinaus zahllose Verbesserungen und Erweiterungen bietet. Das Programm kann wahlweise mit den Kommandos vi oder vim gestartet werden.
Grundsätzlich wird Vim in einer Textkonsole bzw. in einem Konsolenfenster ausgeführt. Wenn Sie ein richtiges Menü und ordentliche Bildlaufleisten bevorzugen, sollten Sie einen Blick auf gvim werfen (siehe Abbildung 17.1). Diese grafische Variante zu Vim muss eventuell extra installiert werden, wobei der Paketname meist vim-X11 oder vim-gnome lautet.
Abbildung 17.1Die grafische Variante des Editors vim
Aus Platzgründen kann dieses Kapitel nur eine Einführung zu Vim geben. Für Einsteiger sehr hilfreich ist das Tutorial, das Sie durch das Kommando vimtutor starten. (Dadurch wird vim gestartet und ein deutschsprachiger Hilfetext geladen, der eine Einführung sowie Beispiele zum Ausprobieren enthält.) Die folgenden Links verweisen auf Seiten mit weiterführenden Informationen:
(Homepage) |
|
(FAQ) |
|
(Tastenkürzel) |
|
(500-seitiges Vim-Buch) |
Der Hauptentwickler Bram Moolenaar bezeichnet Vim als »Charityware«: Vim ist kostenlos unter einer GPL-kompatiblen Lizenz verfügbar. Wer Vim regelmäßig nutzt, wird aber gebeten, sich in Form einer Spende zu bedanken, die einer Kinderhilfsorganisation in Uganda zugutekommt. Weitere Informationen liefert das Vim-Kommando (Esc) (:) help iccf (¢).
17.1Schnelleinstieg
Sie starten Vim üblicherweise in der Form vim dateiname innerhalb einer Textkonsole oder in einem Konsolenfenster. Die zu ändernde Datei wird direkt in der Konsole angezeigt.
Bevor Sie darauflosschreiben können, müssen Sie sich allerdings mit einer Eigenheit auseinandersetzen: Das Programm unterscheidet zwischen unterschiedlichen Bearbeitungsmodi. Der Standardmodus dient nicht zur Eingabe von Text, sondern zur Ausführung von Kommandos. Wenn Sie im Standardmodus beispielsweise (L) eingeben, bewegen Sie damit den Cursor um ein Zeichen nach links. (D) (W) löscht ein Wort, (P) fügt es an der aktuellen Cursorposition wieder ein etc.
Um Text einzugeben, müssen Sie mit (I) (insert) oder (A) (append) in den Einfügemodus wechseln. vim zeigt nun in der untersten Zeile ganz links den Text -- EINFÜGEN -- an. Im Einfügemodus können Sie Text eingeben, den Cursor bewegen und einzelne Zeichen löschen ((Entf) und (_í)). Der Unterschied zwischen (I) und (A) besteht darin, dass die Eingabe bei (I) an der aktuellen Cursorposition beginnt, bei (A) beim Zeichen dahinter.
Bevor Sie wieder ein Kommando eingeben können, müssen Sie mit (Esc) zurück in den Standardmodus wechseln. Dieser Modus wird nicht extra gekennzeichnet. Der linke Teil der letzten Zeile ist jetzt also leer.
Moduswechsel ohne Änderung der Cursorposition
Beim Wechsel vom Einfüge- in den Standardmodus bewegt sich der Cursor um ein Zeichen nach links – es sei denn, er steht bereits am Beginn einer Zeile. Dieses merkwürdige Verhalten ist laut Vim-FAQ beabsichtigt und kann nicht verhindert werden. Um ein einzelnes Kommando auszuführen, ohne den Einfügemodus zu verlassen – und damit auch ohne die aktuelle Cursorposition zu verändern –, leiten Sie die Kommandoeingabe mit (Strg)+(O) ein.
Im Einfügemodus können Sie mit (Entf) und (_í) wie üblich einzelne Zeichen löschen. Wenn Sie Wörter, Zeilen oder ganze Bereiche löschen möchten, wechseln Sie zuerst mit (Esc) in den Standardmodus. Anschließend löscht (D), (W) ein Wort und (D), (D) eine ganze Zeile. Wenn Sie eine Zahl voranstellen, wird das Löschkommando entsprechend oft wiederholt. (5), (D), (D) löscht also fünf Zeilen. (.) wiederholt das zuletzt ausgeführte Kommando.
Tastenkürzel |
Funktion |
---|---|
(I) |
aktiviert den Einfügemodus. |
(A) |
aktiviert den Einfügemodus. Die Texteingabe beginnt beim nächsten Zeichen. |
(Esc) |
aktiviert den Standardmodus bzw. bricht die Kommandoeingabe ab. |
Kommandos im Standardmodus |
|
(D), (W) |
löscht ein Wort. |
(D), (D) |
löscht die aktuelle Zeile. |
n (D), (D) |
löscht n Zeilen. |
(P) |
fügt den zuletzt gelöschten Text hinter der Cursorposition ein. |
(ª)+(P) |
fügt den zuletzt gelöschten Text vor der Cursorposition ein. |
(.) |
wiederholt das letzte Kommando. |
(U) |
macht die letzte Änderung rückgängig (Undo). |
(ª)+(U) |
widerruft alle Änderungen in der aktuellen Zeile. |
(Strg)+(R) |
macht Undo rückgängig (Redo, ab Vim 7). |
(:) w |
speichert die Datei. |
(:) q |
beendet vim. |
(:) q! |
beendet vim auch dann, wenn es nicht gespeicherte Dateien gibt. |
Kommandos im Einfügemodus |
|
(Strg)+(O) kommando |
führt das Kommando aus, ohne den Einfügemodus zu verlassen. |
Tabelle 17.1Elementare Kommandos
(P) (put) fügt den zuletzt gelöschten Text hinter der aktuellen Cursorposition ein, (ª)+(P) davor. (U) (undo) widerruft die letzten Änderungen, (Strg)+(R) (redo) stellt die Änderungen wieder her. (Vim 6 kann nur die letzte Änderung widerrufen, ein nochmaliges (U) stellt die Änderung wieder her.)
Um die geänderte Datei zu speichern, wechseln Sie mit (Esc) in den Standardmodus und geben dann das Kommando (:) w (¢) (write) ein. (:) q (¢) (quit) beendet den Editor, sofern alle offenen Dateien gespeichert sind. Mit (:) q! (¢) erzwingen Sie ein Ende selbst dann, wenn es nicht gespeicherte Änderungen gibt. (:) wq (¢) kombiniert das Speichern und das Programmende.
Hilfe
Vim stellt eine umfassende Online-Hilfe in englischer Sprache zur Verfügung.
Zur Startseite des Hilfesystems gelangen Sie von jedem Modus aus mit (F1). Alternativ führen im Standardmodus (:) help bzw. (:) help thema zur Hilfe. Wenn Sie wissen möchten, welche Hilfethemen es gibt, die das Schlüsselwort abc enthalten, geben Sie (:) help abc (Strg)+(D) ein.
Der Hilfetext wird in einem eigenen Teilbereich von vim angezeigt (einem sogenannten Fenster, auch wenn es sich dabei nicht um ein eigenständiges Fenster im Sinne des Linux-Grafiksystems handelt). Dieses Fenster schließen Sie mit (:) q wieder. Sie können das Hilfefenster aber auch geöffnet lassen und im ursprünglichen Text weiterarbeiten. Dazu wechseln Sie mit (Strg)+(W), (W) das gerade aktive Fenster. Mehr Informationen zum Umgang mit vim-Fenstern, -Puffern und zur Bearbeitung mehrerer Dateien folgen in Abschnitt 17.5, »Mehrere Dateien gleichzeitig bearbeiten«.
Im Hilfetext sind Verweise auf andere Hilfethemen hervorgehoben (in der von mir getesteten Version hellblau). Um zu diesem Thema zu springen, bewegen Sie den Cursor auf das Schlüsselwort und führen (Strg)+(¡) aus. Noch einfacher geht es, wenn die Maus aktiviert ist (siehe Abschnitt 17.7, »Tipps und Tricks«): Dann reicht ein Doppelklick auf das Hilfethema, um dorthin zu springen. (Strg)+(T) führt zur ursprünglichen Seite zurück.