1. Grundlegendes Arbeiten

Vim ist einer der leistungfähigsten Editoren, die es gibt. Er ist extrem effizient und ermöglicht daher seinem Benutzer Texte mit minimalen Tastaturanschlägen zu bearbeiten. Diese Leistung und Funktionalität hat jedoch seinen Preis: Er ist nicht leicht zu erlernen.

Dieses Kapitel lehrt Dich 10 grundlegende vim Kommandos, die Du brauchst, um mit der Arbeit beginnen zu können. Du lernst folgendes:

  1. Die 4 grundlegenden Bewegungskommandos
  2. Wie man Text einfügt und löscht
  3. Wie man Hilfe bekommt (sehr wichtig)
  4. Vim verlassen

Nachdem Du diese Befehle kennst, kannst Du Dich mit den weiterführenden Befehlen beschäftigen.

Bevor Du anfängst

Falls Du Vim noch nicht installiert hast, lese Anhang A, "Vim Installieren", und installier den Editor.

Unter Unix, führe den folgenden Befehl aus:

 $ touch ~/.vimrc
Indem Du eine ~/.vimrc erstellst, sagst Du vim, dass Du den vim Modus benutzen willst. Wenn diese Datei nicht exsistiert, läuft vim im vi Kompatibilitätsmodus und verliert viele seiner weitergehenden Funktionen. Jedoch kannst Du die erweiterten vim Funktionen auch jederzeit innerhalb von vim einschalten, indem Du folgenden Befehl ausführst:
:set nocompatible 
Wenn Du unter MS Windows arbeitest, erstellt der Installationsprozeß eine _vimrc, die Windows Version dieser Datei für Dich.

VIM erstmals benutzen

Um vim zu starten, gib dieses Kommando ein:
$ gvim file.txt 
Das $ steht hier für den Standard Unix prompt. Dein prompt könnte davon abweichen - Das $ brauchst Du nicht mitzutippen -. Wenn Du unter Windows arbeitest, öffne eine MS DOS Konsole und gib dieses Kommando ein:
C:>gvim file.txt
(Auch hier könnte Dein promt abweichen - c:> nicht mittippen -)

In beiden Fällen öffnet vim die Datei file.txt und bietet sie zum bearbeiten an. Da es sich -wahrscheinlich- um eine neue Datei handelt, ist sie zunächst leer. Abbilung 1.1 zeigt, wie Dein Bildschirm aussehen sollte.

Die Tilde Zeilen (~) sind nicht Bestandteil der Datei oder anders vormuliert, wenn auf dem Bildschirm mehr Platz ist als die Datei Zeilen hat, füllt vim diese Zeilen mit Tilden. Am unteren Rand, zeigt Dir eine Status Zeile das Du die neue Datei file.txt bearbeitest. Diese Information ist temporär und wird von anderen Statusmeldungen überschrieben, wenn Du mit dem editieren beginnst:

Vim Startbildschirm

Abbildung 1.1: "Startfenster von vim"

Der vim Befehl

Durch den Befehl gvim wird ein neues Fenster erstellt, in dem gearbeitet werden kann. Wenn Du stattdessen den Befehl vim benutzt, startet der Editor kein neues Fenster, sondern überschreibt dasjenige, in dem Du den Befehl eingegeben hast. Wenn Du ein MS-DOS Fenster unter Windows benutzt, erscheint das geschriebene innerhalb des Fensters. Abbildung 1.2 zeigt ein typisches MS-DOS Kommando Fenster.

---Ich habe leider kein DOS---

Abbildung 1.2 Schreiben mit dem vim Befehl innerhalb eines MS-DOS Fensters

Modi

Vim ist ein modularer Editor. Das heisst, dass er sich je nachdem in welchem Mode Du grade arbeitest, unterschiedlich verhält. Wenn am unteren Fensterrand der Dateiname oder gar nichts steht, befindest Du dich im Normalmode. Wenn Du Dich im Einfüge-/Eingabemodus befindest meldet die Statuszeile -- INSERT -- und wenn Du Dich im Visuellen Modus befindest meldet sie -- VISUAL --.

Das erste mal schreiben

Die nächsten Abschnitte zeigen Dir, wie Du die erste Datei schreibst. Währenddessen lernst Du die ersten vim Befehle, die Du brauchst um vim zu benutzen. Am Ende dises Abschnitts wirst Du wissen, wie man schreibt. Nicht besonders schnell und nicht effizient, aber es wird reichen um das machen zu können, was Du willst.

Text einfügen

Um Text eingeben zu können, musst Du Dich im Eingabemodus befinden. Drücke i und achte darauf wie die Anzeige in der Statuszeile auf -- INSERT -- wechselt.

Nun tippe etwas Text. Dieser wird in die Datei eingefügt. Kümmer Dich nicht um Fehler, die kannst Du später verbessern. Gib den folgenden Programmierer Limmerick ein:

A very intelligent turtle:
Found programming UNIX a hurdle
The system, you see,
Ran as slow as did he,
And that's not saying much for the turtle.

Nachdem Du die Eingabe beendet hast, drücke die <ESC> Taste. Die -- INSERT -- Anzeige verschwindet und Du befindest Dich wieder im Befehls/Normalmode.
Dein Bilschirm sollte ungefähr so aussehen, wie in Abbildung 1.3 dargestellt.

Abbildung 1.3: Bildschirm nachdem der Text eingegeben wurde

Schwierigkeiten bewältigen

Eine der Schwierigkeiten für vim Neulinge ist die Mode Konfusion. Vielleicht hast Du vergessen, in welchem Mode Du Dich befindest oder aus versehen eine Taste gedrückt, die den Mode wechselt. Um, aus welchem Mode auch immer, in den Normal-/Befehlsmodus zurückzukehern drücke <ESC>.

Bewegen im Text

Nachdem Du wieder im Befehlsmodus bist, kannst Du Dich hier mit diesen Tasten bewegen: h(links), j(runter), k(rauf), l rechts. Zunächst könnte es so aussehen als seinen diese Tasten willkürlich gewählt. Wer hat denn schon jemals davon gehört, dass man mit l nach rechts kommt? Aber es gibt tatsächlich gute Gründe für diese Wahl: Cursor Bewegungen werden in einem Editor am häufigsten gebraucht und diese Tasten liegen in der Standard Reihe Deiner rechten Hand. Daraus folgt, dass diese Tasten genau dort liegen wo Du Sie am schnellsten tippen kannst.

Hinweis
Du kannst den Cursor auch mit den Pfeiltasten bewegen. Jedoch verlangsamt das Deine Arbeitsgeschwindigkeit extrem, da Deine Hand Ihre übliche Stellung verlassen muss. Wenn Du im Hinterkopf behälst, dass Du dieses vielleicht 100 mal pro Stunde machst, addiert sich das schon auf. Wenn Du effizient editieren willst, nimm h, j, k und l.
Es gibt auch Tastaturen, die gar keinen Pfeilblock haben oder bei denen dieser Block an einer unüblichen Stelle liegt. Wenn Du mit den Bewegungstasten umgehen kannst, hilft Dir das in solchen Situationen.


Ein Weg sich die Bedeutung der Tasten einzuprägen ist das h links liegt und l rechts. Ein kleines j steht nach unten über die meisten Kleibuchstaben hinaus und k nach oben. Ein anderer Trick ist es sich die folgende Grafik an eine Ecke des Monitors zu kleben, bis man es beherscht.

Zeichen löschen

Um ein Zeichen zu löschen, stelle den Cursor auf das Zeichen und drück x (Dies ist ein Zugeständnis an alte Schreibmaschinen Zeiten, als man Dinge löschte indem an sie über'x'te).

Bewege den Cursor beispielsweise auf das erste Zeichen und tippe xxxxxx (6*x), um die ersten sechs Zeichen der Zeile zu entfernen. Abbildung 1.4 zeigt das Ergebnis. Um eine Korrektur einzugeben, tippe iA young <ESC>. Hierdurch startes Du den Einfügemodus (i), fügst die Worte 'A young' ein und beendest den mode dann wieder (das abschließende <ESC>;). Abbildung 1.5 zeigt das Ergebnis:

nach löschen

Abbildung 1.4: Bildschirm nach dem löschen (xxxxxx)

Nach einfügen

Abbildung 1.5: Bildschirm nach dem Einfügen

Hinweis
Vim ist ein Texteditor. Standardmäßig umbricht er keinen Text. Du musst jedesmal <ENTER> drücken. Falls Du das nicht machst und immer weiter tippst, wenn Du den rechten Rand erreichst, gibst Du lediglich eine sehr lange Zeile ein. Du wirst nicht automatisch die nächste Zeile anfangen. Um eine neue Zeile anzufangen musst Du <ENTER> drücken (Dies ist die Standardarbeitsweise. Jedoch kannst Du vim so konfigurieren, dass er an Wordgrenzen umbricht, wie in Kapitel 11 "Mit Textdateien umgehen" beschrieben).

Rückgängig machen und wiederherstellen

Stell Dir vor, Du hast zu viel gelöscht. Du könntest es wieder eintippen, aber es gibt eine einfachere Lösung. Das u(undo) Kommando macht das zuletzt bearbeitete rückgängig.
Schau Dir dies in Aktion an. Bewege den cursor zum A in der ersten Zeile. Tippe nun xxxxxxx, um A young zu löschen. Das Ergebnis ist:
intelligent turtle
Tippe jetzt u, um die letzte Änderung wieder rückgängig zu machen. Dieses Rückgängig stellt das g wieder her. Das Rückgängig holt also den Buchstaben zurück.
g intelligent turtle
Der nächst u Befehl stellt den nächsten gelöschten Buchstaben wieder her:
ng intelligent turtle
Mit dem nächsten u Befehl stellst Du das u wieder her und so weiter:
	 ung intelligent turtle
	 oung intelligent turtle
	 young intelligent turtle
	  young intelligent turtle
	 A young intelligent turtle
      
Falls Du zuviel rückgängig gemacht hast, kannst Du STRG+R (redo) drücken, um das vorhergegangene Kommando rückgängig zu machen.

Um dies in Aktion zu erleben, drücke 2 mal STRG+R. Der Buchstabe A und das LEER dahinter verschwinden:

young intelligent turtle
Es gibt auch eine besondere Version des Wiederherstellungsbefehls, der U (stelle Zeile wieder her) Befehl. Der "Stelle Zeile wieder her" Befehl nimmt alle Änderungen an einer Zeile zurück, die seit der letzten Bearbeitung durchgeführt wurden. Wenn man den Befehl 2 mal ausführt wir das erste U gelöscht und alles bleibt beim alten.

Hinweis Falls Du ein alter vi Benutzer bist, achte darauf, dass der vielstufige rückgängig vim Befehl stark vom einstufigen rückgängig Befehl abweicht, der vi Benutzern zur Verfügung steht.

Hinweis Während des ganzen Buches gehen wir davon aus, dass der vi Kompatibilitätsmodus ausgeschaltet ist (der vi Kompatibilitätsmodus schaltet viele weitergehende Funktionen von vim ab). Dieses Merkmal wird automatisch unter UNIX abgeschaltet, sobald eine Datei $HOME/.vimrc erstellt wurde. Für MS Windows Benutzer wird es während der Installation abgeschaltet (Wenn die Kompatibilität abgeschaltet ist, liefert der Befehl v einestufiges rückgängig machen).

	 A very intelligent turtle
	    xxxx                 lösche very
	 A intelligent turtle
	                  xxxxxx   lösche trutle
         A intelligent
         U      	        stelle Zeile wieder her
	 A very intelligent turtle		  
	 U                      2. U macht erstes rückgängig
	 A intelligent
      

Rauskommen

Zum Beenden benutze den ZZ Befehl. Dieser Befehl schreibt die Datei und beendet vim.
Anders als viele andere Editoren, erstellt vim automatisch eine Sicherungsdatei. Wenn Du ZZ benutzt, werden Deine Änderungen geschrieben und es gibt keinen Weg zurück (Du kannst vim so konfigurieren, dass Sicherungsdateien erstellt werden, wie in Kapitel 14 "Dateiwiederherstellung und Kommandozeilenargumente" beschrieben).

Änderungen verwerfen

Manchmal macht man ein paar Änderungen und stellt dann plötzlich fest, dass man es besser gelassen hätte. Keine Angst, Vim hat einen Befehl für "beenden und wegschmeissen". Es ist: :q!
Für diejenigen unter Euch, die an Details insteressiert sind, die 3 Teile dieses Kommandos sind der Doppelpunkt (:), der den Kommandomodus einleitet, dem q Kommando, der dem Editor sagt abzubrechen und der Überschreibkommandoerweiterung (!). Der Überschreibkommandoerweiterer ist nötig, da vim Änderungen nicht gern wegwirft. Du musst auch <ENTER> drücken, da dies ein Kommandomodus Befehl ist (Alle Kommandomodus Befehle brauchen ein <ENTER> am Ende. Dieses wird im folgenden Text nicht mehr angegeben).

Falls Du probierst nur :q zu tippen. wird vim eine Fehlermeldung ausgeben und sich weigern abzubrechen:

No write since last change(use ! to override)
Indem Du die Überschreibkommandoerweiterung benutzt, sagst Du vim eigentlich, "Ich weiß das, dass blöd aussieht was ich eingegeben habe, aber ich bin schon groß und will das wirklich."

Andere Editier Befehle

Nachdem Du nun einige grundlegenden einfachen Befehle kennst, wird es Zeit ein paar weitere, ein wenig komplexere, kennen zu lernen.

Einfügen von Buchstaben am Zeilenende

Das i Kommando fügt einen Buchstaben, vor dem Buchstaben über dem der Cursor steht, ein. Das geht prima, nur was ist wenn Du am Zeilenende etwas anhängen willst? Dazu mußt Du Text hinter dem Cursor einfügen. Dies wird mit dem a (append-anhängen) Befehl gemacht.

Zum Beispiel, um die Zeile:

and that's not saying much for the turtle.
in
and that's not saying much for the turtle!!!
zu ändern, stell den Cursor über den Punkt am Zeilenende. Drücke dann x, um den Punkt zu löschen. Der Cursor steht nun am Zeilenende über dem e von turtle:
and that's not saying much for the turtle
Drücke jetzt a!!!<ESC>, um 3 Ausrufungszeichen nach dem e von trutle anzuhängen:
and that's not saying much for the turtle!!!

Eine Zeile löschen

Benutze den dd Befehl, um eine Zeile zu löschen. Du löscht damit die Zeile, in der sich der Cursor befindet. Um beispielsweise die mittlere Zeile unseres Beispiels zu löchen, positioniere den Cursor irgendwo in der Zeile The system, you see, wie in Abbildung 1.6 gezeigt. Drücke jetzt dd. Abbildung 1.7 zeigt das Ergebnis.

vor_dd

Abbildung 1.6: Bildschirm vor dem dd Befehl

nach_dd

Abbildung 1.7: Bildschirm nach dem dd Befehl

Neue Zeilen einfügen

Um eine neue Zeile unterhalb der Zeile auf der der Cursor steht einzufügen, benutze das o Kommando.

Nehmen wir einmal an, dass Du eine Zeile direkt hiter der 3. des Beispieltextes einfügen willst. Beginne indem Du den Cursor auf die Zeile "Ran as slow..." positionierst, wie in Abbildung 1.7 gezeigt.
Drücke jetzt o, um eine neue Zeile zun öffnen. Gibt den Text in der Zeile ein und drücke dann <ESC>, um den Eingabemodus zu beenden. Abbildung 1.8 zeigt das Ergebnis.
Wenn Du eine Zeile oberhalb derjenigen in der Du stehst einfügen willst, benutze das O (groß) Kommando.

nach_o_Befehl

Abbildung 1.8: Bildschirm nach dem o Befehl

Hilfe

Abschließend gibt es noch ein wichtigeres Kommando, dass help Kommando. Um Hilfe zu bekommen gib folgendes ein:
:help
(Denk daran, dass wir vereinbart hatten das <ENTER> nicht mehr zu erwähnen). Hiermit öffnest Du ein Haupthilfefenster, wie Du es in Abbildung 1.9 siehst.

Hilfeseite

Abbildung 1.9: Hilfe Bildschirm

Wenn Du kein Stichwort angibst, zeigt :help eine Standard Hilfeseite an. Die Entwickler von vim haben mit dem Hilfesystem etwas sehr geschicktes (oder sie waren sehr faul) gemacht. Sie steckten das Hilfesystem in eine normale Seite. Du kannst also alle normalen vim Bewegungsbefehle benutzen, um Dich im Hilfesystem zu bewegen. Daher bewegen h, k, j, und l den Cursor nach links, oben, unten, rechts und so weiter.

Um die Hilfe zu beenden, benutzt Du einfach das gleiche Kommando wie beim Editor: ZZ.

Wenn Du die Hilfeseiten ließt, wirst Du einige Stellen finden, der in Senkrechte Striche eingeschlsssen ist (z.B. |:help|). Das bezeichnet einen Hyperlink. Wenn Du den Cursor irgendwo zwischen die Striche stellst und STRG+](springe zum Kennzeichen -engl. tag -) drückst, bringt Dich das Hilfesystem zum angegebenen Stichwort (aus Gründen die hier nicht besprochen werden, bezeichnet vim hyperlinks als Kennzeichen - engl. tag -. Also springt STRG-] zu dem Ort eines tags, der durch das Wort unter dem Cursor definiert wird).

Nach ein paar Sprüngen möchtest Du vielleicht zurück. STRG+T(gehe zu vorherigem tag) bringt Dich zum vorherigen Bildschirm zurück oder mit vim Worten "holt ein Kennzeichen vom Kennzeichen Stapel - pops a tag off the tag stack."

Am oberen Bilschirmrand findest Du die Bezeichnung *help.txt*. Diese Bezeichnung wird vom Hilfssystem benutzt, um ein Kennzeichen zu definieren (hyperlink Ziel). Kapitel 7, "Kommandos für Programmierer", erklärt Kennzeichen detailiert.

Um zu einem bestimmten Thema Hilfe zu bekommen, benutze:

:help Thema
Um z.B. zum x Befehl Hilfe zu bekommen, benutze:
:help x
Um herauszufinden wie man etwas löscht, nimm:
help deleting
Um ein Inhaltsverzeichnis der zur Verfügung stehenden Hilfen zu bekommen benutze:
:help index
Wenn Du für einen Steuerungsbefehl Hilfe brauchst (z.B. STRG-A) musst Du es mit dem Präfix CTRL- versehen (die STRG Taste wird auf US Tastaturen mit CTRL (control) bezeichnet. Ein echter Held, der meinte das für deutsche Tastaturen übersetzen zu müssen :-():
:help CTRL-A
Der Vim Editor hat viele verschiedene Modi. Standardmäßig liefert das Hilfesystem Hilfen für Normalmode Befehle. Beispielsweise liefert das folgende Kommondo Hilfe zum Normalmode STRG-H Befehl:
:help CTRL-H
Um andere Modi anzugeben, nimm das mode Präfix.
Wenn Du Hilfe zum Eingabemodus (insert mode) dieses Kommandos brauchst, musst Du das mit dem Präfix i_ angeben. Der gesammte Befehl lautet also:
:help i_CTRL-H
Tabelle 1.1 nennt einige andere mode Präfixe.

Wenn Du den Editor startest, kannst Du einige Kommandozeilenoptionen angeben. Diese beginnen alle mit einem Minus (-). Um herauszufinden, was zum Beispiel die -t Option macht, benutze den Befehl:

:help -t
Der Vim Editor hat auch eine Menge von Optionen, mit dennen Du dennen Du das Verhalten konfigurieren und anpassen kannst. Wenn Du Hilfe zu einer diesr Optionen benötigst, musst Du sie in einfache Anführungszeichen einschließen. Um beispielsweise herauszufinden was die Option number macht, benutze den folgenden Befehl:
:help 'number'
Die folgende Tabelle fasst einige spezielle Präfixe zusammen.



Mode Präfix Beispiel
Normalmode Befehle (nichts)
:help x
Befehle mit STRG CTRL-
:help CTRL-u
Visueller Modus v
:help v_u
Eingabe Modus i
:help i_<ESC>
ex-modus Befehle :
:help :quit
Kommandozeile bearbeiten c
:help c_<DEL>
Vim Kommando Argumente -
:help -r
Optionen '(beide Seiten)
:help 'textwidth'

Tabelle 1.1: Hilfe Präfixe

Sondertasten werden in spitze Klammern eingeschlossen. Um Hilfe für die 'Pfeil nach oben' Taste zu bekommen, musst Du folgendes eingeben:

:help <Up>
Anhang B, "Bezeichnungen der Sondertasten", gibt eine komplette Liste der Tasten.

Andere Wege um Hilfe zu bekommen

Mit der <F1> Taste kommst Du auch zur Standardhilfeseite. Diese Seite ist eine allgemeine Hilfseite und Du kannst sie als Ausgangspunkt Deiner Navigation verwenden. Falls Deine Tastatur eine Hilfe Taste hat, kannst Du auch diese benutzen.

Einen Zähler verwenden um schneller zu arbeiten

Angenommen Du willst 9 Zeilen nach oben. Du kannst kkkkkkkkk tippen oder das Kommando 9k benutzen.

Tatsächlich, kannst Du allen Bewegungsbefehlen einen Zähler voranstellen. Weiter oben in dieser Lektion fügtest Du Ausrufungszeichen mit dem Kommando a!!!<ESC> ein. Das kannst Du auch mit dem Kommando 3a!<ESC> erreichen. Der Zähler 3 weisst den Befehl a an 3 mal das anzuhängen was folgt (!). Ähnlich kannst Du das Kommando 3x verwenden um 3 Zeichen zu löschen.

Die vim Anleitung

Die UNIX Version des vim bringt eine interaktive Anleitung mit. Das erste Kapitel deckt vieles ab, was in diesem Abschnitt angesprochen wurde. Um die Anleitung zu starten gib:
$ vimtutor
ein.

Die Anleitung beginnt damit, Dir die Bewegungstasten zu erklären, damit Du Dich in ihr bewegen kannst. Danach stellt sie in Abstufungen komplexere Kommandos vor. Falls Du an einem nicht UNIX System sitzt führe das Kommando:

:help tutor
aus, um Anweisungen zu erhalten, wie Du die Anleitung auf Deinem System starten kannst (es ist nicht schwierig).

Zusammenfassung

Du weisst nun genug um mit vim zu arbeiten. Nicht schön oder schnell, aber Du kannst arbeiten. Nimm Dir etwas Zeit um mit diesen Kommandos zu üben, bevor Du zum nächsten Kapitel gehst. Nachdem Du diese Kommandos verinnerlicht hast, kannst Du mit den komplexeren Kommandos weitermachen, mit denen Du schneller und einfacher arbeiten kannst.
Inhalt weiter

Maik Holtkamp Letzte Änderung: Mon Nov 18 01:20:46 CET 2002 Vim_logo