Vim-Workshop

Aus LinuxUser 09/2006

Vim-Workshop

Simsalavim!

Vim ist auf allen Linux-Distributionen zu Hause: Der Editor arbeitet im Textmodus, ganz ohne Maus, und steht damit allen Konsolenfans hilfreich zur Seite.

Etwas gewöhnungsbedürftig sind sie, die Texteditoren Vim [1] sowie dessen Vorgänger Vi (der auf modernen Linux-Distributionen in der Regel ein Link oder Alias auf Vim ist). Viele Benutzer schrecken vor dem praktischen Tool wegen seiner etwas sperrigen Bedienung zurück. Wer sich aber mit den verschiedenen Betriebsmodi erst einmal vertraut gemacht hat, mag auf die hilfreichen Dienste des schlanken Editors nicht mehr verzichten.

Eine Frage des Zustands

Den meisten Benutzern bereitet vor allem das Konzept der unterschiedlichen Vim-Betriebsmodi Probleme. Vim kennt insgesamt vier dieser Betriebszustände.

Der Normalmodus dient als zentraler Modus, von dem aus Sie in die anderen Modi wechseln. Vim befindet sich nach dem Start in dieser Betriebsart, die man auch als Kommando- oder Befehlsmodus bezeichnet. Über verschiedene Tastaturkommandos löschen, kopieren und verschieben Sie Text. Dabei folgen die Eingaben der folgenden Struktur: Zunächst geben Sie an, wie oft ein Kommando ausgeführt werden soll (ohne nähere Angaben genau einmal), danach folgt der Befehl. Um von einem der anderen Modi in den Befehlsmodus zu wechseln, tippen Sie ein- oder mehrmals die [Esc]-Taste, bis ein Piepston signalisiert, dass Sie im Normalmodus angekommen sind.

TIPP

Mit [.] wiederholen Sie das letzte Vi(m)-Kommando.

Um Text einzugeben, wechseln Sie durch Drücken der Taste [I] (“insert”) in den Einfügemodus. Dass Sie in diesem Betriebszustand sind, zeigt der Vim durch den Text -- EINFÜGEN -- in der linken unteren Ecke an. Andere Möglichkeiten, um in diesen Modus zu wechseln, sind [A] (“append”), um Text direkt nach dem Cursor einzufügen, sowie [Umschalt]+[I] (springt an den Anfang der aktuellen Zeile und in den Einfügemodus) und [Umschalt]+[A] (springt ans Zeilenende und wechselt in den Einfügemodus). Weiterhin tippen Sie im Normalmodus [O], um eine Zeile unter dem Cursor zu öffnen, oder [Umschalt]+[O], um eine Zeile über dem Cursor einzufügen.

Tippen Sie im Normalmodus einen Doppelpunkt ein, um in den Kommandozeilenmodus zu wechseln. Hinter dem Doppelpunkt geben Sie Kommandos ein, wie etwa zum Suchen und Ersetzen von Text. Tippen Sie ein Ausrufezeichen direkt nach dem Doppelpunkt, um Shell-Befehle auszuführen.

Im Visualmodus markieren Sie Bereiche zeichen-, zeilen- oder blockweise, um sie beispielsweise zu kopieren oder auszuschneiden. In den Betriebsart wechseln Sie über die Tastenkombination [Esc]+[V]. Dass Sie in diesem Modus sind, erkennen Sie am Text -- VISUELL -- in der linken unteren Bildecke. Markierter Text erscheint hervorgehoben.

Erste Schritte

Sie starten den Editor über den Kommandozeilenaufruf vim, wobei sie optional die zu bearbeitende Datei gleich mit angeben:

vim linux-user/2006/08/vim.txt

Zum Verlassen des Editors wechseln Sie zurück in den Normalmodus und geben :q! ein, um Vim zu beenden und alle gemachten Änderungen zu verwerfen. Alternativ tippen Sie :wq, wenn Sie vor dem Verlassen von Vim die Änderungen speichern möchten. Einen Arbeitsschritt sparen Sie, wenn Sie stattdessen :x eingeben oder zweimal [Umschalt]+[Z] tippen.

Um zwischendrin Änderungen abzuspeichern, ohne Vim zu beenden, dient der Befehl :w. Alternativ geben Sie hinter dem Befehl einen Dateinamen an, um den Text in einem neuen File abzulegen:

:w neue_datei.txt

Verschiedene Aufrufparameter beeinflussen den Start des Editors: Soll beispielsweise eine Datei im reinen Lesemodus geöffnet werden, geben Sie zusätzlich -R an. Daneben bietet Vim eine praktische Recovery-Funktion, um abgestürzte Sessions wiederherzustellen. Geben Sie dazu auf der Kommandozeile den Befehl vim -r datei ein.

Einen einzelnen Arbeitsschritt machen Sie rückgängig, indem Sie [U] tippen. Gleich mehrere Schritte gehen Sie zurück, indem Sie die Taste mehrmals betätigen. Alle am einer Zeile vorgenommenen Anderungen widerrufen Sie, indem Sie [Umschalt]+[U] eingeben.

Eine Übersicht sämtlicher Aufrufparameter mit kurzer Erklärung erhalten Sie, wenn Sie auf der Shell vim --help tippen.

Tabula Rasa?

Im Gegensatz zum klassischen Vi funktionieren bei Vim im Einfügemodus die Tasten [Entf] und [Rückschritt], um Zeichen zu löschen. Viel praktischer und schneller sind jedoch die Lösch- und Änderungsfunktionen im Befehlsmodus. Das Zeichen unter dem Cursor entfernen Sie beispielsweise mit Druck auf [X], mehrere Zeichen radieren Sie durch eine vorangestellte Ziffer aus: So löscht die Eingabe von 5x beispielsweise gleich fünf Zeichen.

Um das Wort unter dem Cursor zu löschen, positionieren Sie diesen auf den ersten Buchstaben und tippen dann die Kombination dw. Möchten Sie das Wort durch etwas anderes ersetzen, tippen Sie stattdessen cw – Vim entfernt nicht nur das Wort unter dem Cursor, sondern wechselt auch automatisch in den Einfügemodus, so dass Sie direkt losschreiben können.

Einen Satz löschen Sie hingegen über die Kombination d), und von der aktuellen Cursorposition bis zum Zeilenende löschen Sie mit d$. Auch hier ersetzen Sie das d durch ein c, um direkt anschließend in den Einfügemodus zu wechseln. Eine ganze Zeile werden Sie über dd los, und um auf einen Rutsch drei Zeilen zu entfernen, tippen Sie 3dd; 3cc löscht drei Zeilen und schaltet in den Einfügemodus.

Weitere Kombinationen mit anderen Befehlen sind möglich: Wer beispielsweise alles von der aktuellen Zeile bis zum Dateiende verschwinden lassen möchte, tippt dG; von der aktuellen Zeile bis zum Dateianfang erwischen Sie alles in einem Rutsch, wenn Sie dgg eingeben.

Kopierkünstler

Mit den eben gezeigten Befehlen entfernter Text lässt sich an anderer Stelle im Dokument wieder einfügen. Drücken Sie dazu [P], um den Zwischenspeicher vor dem Cursor einzusetzen. Alternativ fügt die Kombination [Umschalt]+[P] den Text hinter dem Cursor ein.

Natürlich müssen Sie Text nicht erst löschen, um ihn in den Zwischenspeicher zu laden und an anderer Stelle wieder einzufügen – Vim bringt auch einige Funktionen zum Kopieren mit. Eine Zeile duplizieren Sie in Windeseile über Eingabe von yy und Druck auf [P] respektive [Umschalt]+[P]. Auch hier sind Kombinationen möglich: Geben Sie vorher durch eine Ziffer an, wie viele Zeilen Sie kopieren möchten. Tippen Sie beispielsweise 5yy, um die aktuelle und die nächsten vier Zeilen zu kopieren.

Möchten Sie Bereiche noch gezielter kopieren möchte, stehen dazu verschiedene Wege offen. Eine praktische Möglichkeit bietet der Visualmodus: Drücken Sie [Esc]+[V], wählen Sie mit den Pfeiltasten einen Bereich aus und drücken Sie [Y], um den Text in den Zwischenspeicher zu kopieren. An anderer Stelle fügen Sie diesen über [P] oder [Umschalt-P] wieder ein.

Suchen und ersetzen

Textstellen spüren Sie auf, indem Sie / und den Suchbegriff gefolgt von [Eingabe] tippen. Mit [N] suchen Sie weiter in dieselbe Richtung und mit [Umschalt]+[N] in die andere Richtung. Ebenso können Sie direkt rückwärts suchen, indem Sie ?Suchbegriff tippen. Vim bringt zwei praktische Abkürzungen mit: Geben Sie * ein, um vorwärts nach dem Wort unter dem Cursor zu suchen; mit # geht es in die andere Richtung.

Programmierern und LaTeX-Freunden bietet Vim ein weiteres praktisches Feature, um passende Klammern aufzuspüren: Gehen Sie auf die öffnende Klammer, wie (, { oder [, und tippen Sie %. Vim springt nun automatisch zur schließenden Klammer; ein erneuter Druck auf % bringt Sie wieder zur öffnenden Klammer zurück.

Um etwas zu suchen und zu ersetzen, verwenden Sie den Kommandozeilenmodus. Um etwa in einem Text Vi durch Vim zu ersetzen, tippen Sie :s/Vi/Vim. Dabei ersetzt Vim nur das nächste Vorkommen des Begriffs. Alle Begriffe einer Zeile ändern Sie dagegen mit :s/Vi/Vim/g und alle Vorkommen in der gesamten Datei mit :%s/Vi/Vim/g

Weitere anschauliche Beispiele zu diesem Feature – auch unter Verwendung von regulären Ausdrücken – finden Sie beispielsweise unter [2].

Auf immer und ewig

Vim sucht beim Programmstart nach einer Einrichtungsdatei; standardmäßig ist das ~/.vimrc im eigenen Home-Verzeichnis. Eine gute Vorlage, die Sie kopieren und an eigene Bedürfnisse anpassen können, finden Sie unter /etc/vimrc respektive /etc/vim/vimrc.

Die Konfigurationsdatei des Editors (~/.vimrc) bietet nicht nur Platz für verschiedene persönliche Einstellungen, sondern auch für eigene Makros [3], individuelles Syntaxhighlighting und vieles mehr. Der Kasten “Eigene .vimrc” zeigt ein paar einfache Beispiele mit Kommentaren (in Vim-Syntax hinter den "-Zeichen).

HINWEIS

Einen ausführlichen Artikel über Vim-Makros finden Sie in der nächsten Ausgabe von LinuxUser.

Eigene .vimrc

"Syntaxhighlighting einschalten:
syntax on
"Zeilennummerierung anzeigen:
set number
"Während der Suche schon zum entsprechenden Text springen:
set incsearch
"keine automatische Einrückung:
set nosmartindent
"Weise Taste F2 den Shell-Befehl fmt zu:
map <F2> !}fmt<CR>
"Rufe bei Druck auf F3 ispell mit Parametern auf:
map <F3> :w!<CR>:!ispell -T latin1 %<CR>:e! %<CR>

Hilfe!

Vim bietet eine sehr ausführliche englischsprachige Dokumentation, die Sie aus dem Editor über [F1] oder :help erreichen. Dazu teilt sich das Editorfenster, und Sie sehen die Hilfe in der oberen Fensterhälfte. In der Dokumentation blättern Sie mit den Pfeiltasten sowie mit [Bild auf] und [Bild ab]; mit der Eingabe von :q verlassen Sie die Vim-Hilfe.

Verknüpfungen zwischen den verschiedenen Hilfethemen erkennen Sie an Begriffen, die zwischen zwei senkrechten Strichen eingeschlossen sind (Abbildung 1). Direkt zum entsprechenden Unterkapitel springen Sie, indem Sie den Cursor zwischen den beiden Strichen positionieren und dann die Tastenkombination [Strg]+[AltGr]+[9] (Strg-]) drücken; mit [Strg]+[O] oder [Strg]+[T] geht es wieder zurück.

Abbildung 1: Vim kommt mit einer ausführlichen Hilfe und Befehlsreferenz daher; Links zu Unterkapiteln stehen in zwei senkrechte Striche eingeschlossen.

Abbildung 1: Vim kommt mit einer ausführlichen Hilfe und Befehlsreferenz daher; Links zu Unterkapiteln stehen in zwei senkrechte Striche eingeschlossen.

Um in der Hilfe gezielt nach Begriffen zu suchen, geben Sie :help Thema ein; der Einsatz von Wildcards, wie * (ersetzt beliebige Zeichenketten) und ? (ersetzt einen einzigen Buchstaben) ist erlaubt. Findet Vim nichts Passendes, springt der Editor zum nächstbesten Treffer. Mit einem Trick zeigen Sie mehrere Themen an und wählen daraus aus: Geben Sie :help und die ersten Buchstaben des gesuchten Begriffs ein, etwa help synt, und drücken Sie dann [Strg]+[D]. Vim zeigt jetzt sämtliche Themen der Hilfe an, welche die Zeichenkette “syn” enthalten.

TIPP

Manchmal ist es praktisch, die Vim-Doku im oberen Fensterbereich anzuzeigen und in der unteren Hälfte weiterzuarbeiten: Mit der Tastenkombination [Strg]+[W],[Pfeil unten] respektive [Strg]+[W],[Pfeil oben] springen Sie zwischen den Bereichen hin und her.

Als weiter Quelle für Informationen rund um Vim empfiehlt sich das mitgelieferte Tutorial, das Sie über den Kommandozeilenbefehl vimtutor auf den Plan rufen. Bei den meisten aktuellen Distributionen ist diese Einführung auf Deutsch vorhanden und präsentiert sich auch so, sofern Sie die Umgebungsvariable $LANG richtig gesetzt haben; im Netz finden Sie dieses Tutorial außerdem unter [4].

Infos

[1] Vim-Homepage: http://www.vim.org/

[2] Vim im LinuxWiki.org: http://linuxwiki.de/Vim

[3] Vim-Makros: Andreas Kneib, “Makros, Mappings, Mutationen”, Linux-Magazin 11/2001, http://www.linux-magazin.de/Artikel/ausgabe/2001/11/vim/vim.html

[4] Deutsches Vim-Tutorial: http://people.freenet.de/schuttvim/tutor.ge.html

LinuxUser 09/2006 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben