VIM Grundlagen


Installation

Standardmäßig ist VIM schon auf dem Mac installiert. Allerdings nicht die neuste Version. Das lässt sich aber schnell ändern:

brew install vim --with-override-system-vi

Brew ist ein Paketmanager für MacOS, den man nachinstallieren muss, weil Apple ihn nich von Haus aus mitliefert. Hier findest Du alles, was Du dazu brauchst.

Bewegen des Cursors

  • h: links
  • j: unten
  • k: oben
  • l: rechts

VIM beenden

  • Ohne Änderungen zu speichern

    • <ESC> drücken (um sicherzustellen, dass Du im Kommando-Modus bist)
    • :q! Verwirft alle Änderungen und beendet VIM
  • Änderungen speichern

    • Der schnellste Weg führt über die Tastenkombination ZZ
    • Alternativ funktioniert auch :wq

Hilfe

Tippe nach dem/den ersten Buchstaben eines Befehls STRG-D und Dir werden alle mit diesem Buchstaben möglichen Befehle angezeigt

Text editieren

Löschen

Einzelne Zeichen löschen

  • <ESC> drücken (um sicherzustellen, dass Du im Kommando-Modus bist)
  • x drücken, damit das Zeichen unter dem Cursor gelöscht wird

Ganze Worte löschen

  • Bewege den Cursor an den Anfang des zu löschenden Wortes
  • Tippe dw um das Wort zu löschen

Bis zum Ende der Zeile löschen

  • Bewege den Cursor an die Stelle, ab der der Rest der Zeile gelöscht werden soll
  • Tippe `d$

Einfügen

  • Den Cursor zu dem Zeichen nach der Stelle, an die etwas eingefügt werden soll, navigieren
  • Mit i in den Editier-Modus wechseln
  • Den einzufügenden Text eingeben
  • Mit <ESC> wieder in den Normal-Modus wechseln

Anfügen

  • Den Cursor in die Zeile bewegen, in die Du etwas anfügen möchtest
  • A drücken (der Cursor springt jetzt ans Ende der Zeile)
  • à` lässt den Cursor ans Ende des Wortes springen
  • Text eingeben
  • Mit <ESC> wieder in den Normal-Modus wechseln

Zeile öffnen

Um die die Zeile unterhalb des Cursors zu öffnen und direkt Text dort hineinschreiben zu können, verwende den Operator o. Er fügt unterhalb des Cursors eine Zeile ein und schaltet VIM in den Editier-Modus.

Soll das Ganze oberhalb des Cursors passieren, verwende einfach das große O.

Einlesen von Text

Mit dem Kommando :r [Dateiname] kannst Du den Inhalt einer Datei an die Cursorposition einfügen.

Alternativ kannst Du auch die Ausgabe eines externen Befehls in Deine Datei einfügen:

:r !ls fügt z.B. die Liste der Dateien und Ordner des aktuellen Verzeichnisses in Deinen Text ein.

Copy & Paste

Eine mit dd gelöschte Zeile wird im VIM-Register gespeichert und kann mit p wieder eingefügt werden.

Ausserdem kannst Du hier den visuellen Modus (v) dazu verwenden, um Text zu markieren, ihn mit y zu kopieren und an anderer Stelle wieder mit p einzufügen.

Alternativ kannst Du auch mit yw das Wort unter dem Cursor kopieren

Ändern

ce löscht den Rest des Wortes ab dem Cursor und wartet auf die Eingabe der neuen Zeichen. Ansonsten arbeitet das Change-Kommando mit den gleichen Bewegungen wir delete: c[Anzahl] Bewegungsschritt`

Ersetzen

Hierzu wird VIM durch ein rx mitgeteilt, dass das Zeichen unter dem Cursor durch ein x ersetzt werden soll. Mit R wechselst Du in den Ersetzungsmodus, mit dem Du so lange Zeichen überschreibst, bis Du den Modus über <ESC> wieder verlässt.

Erweitertes Ersetzen

Neben dem weiter oben erwähnten Kommando zum Ersetzen git es noch eine, die deutlich mehr Möglichkeiten bietet.

:s/alt/neu/g ersetzt alt durch neu. Durch das /g findet die Ersetzung im ganzen Dokument statt.

:11,12s/alt/neu/g ersetzt in den Zeilen 11 und zwölf alle Vorkommen von alt durch neu

Schreibt man ganz ans Ende noch ein c, wird ein Fragedialog angezeigt.

Optionen

Mit einer Option kannst Du z.B. eine Suche so konfigurieren, dass sie nicht zwischen Gross- und Kleinschreibung unterscheidet:

:set xxx

wobei xxx folgende Werte annehmen kann:

  • ic: ignore case
  • is: incsearch (zeigt Teilübereinstimmungen)
  • hls: hlsearch (hebt passende Ausdrücke hervor)

Mit einem no vor dem entsprechenden Ausdruck kannst Du die Option wieder abschalten.

Undo

  • Mit jedem Drücken von u wird wird ein Schritt rückgängig gemacht.
  • CTRL + R macht das letzte Undo wieder rückgängig
  • U: stellt eine ganze Zeile wieder her

Datei speichern

Du kannst entweder den ganzen Text in eine Datei speichern:

:w [Dateiname]

oder nur einen Teil des Textes in einer neuen Datei speichern: Dazu markierst Du zunächst den auszuwählenden Text mit v Bewegung Im nächsten Schritt tippst Du :. Jetzt wird in der Fußzeile :'<,'> angezeigt. Tippe jetzt w [Dateiname] und drückeEnter`.

Mit dem Operator v aktivierst Du die visuelle Auswahl, die sich mit dem Cursor vergrößern lässt. Anschließend lässt sich ein Operator auf diesen markierten Text anwenden. Du kannst ihn z.B. mir d löschen.

Operatoren und Bewegungszüge

Operator [Anzahl] Bewegungsschritt

Einige Operatoren hast Du ja schon kennengelernt, wie z.B.

  • x
  • d

Diese lassen sich mit Bewegungen kombinieren:

  • w bis zum Beginn des nächsten Wortes, ohne dessen erstes Zeichen
  • e zum Ende des aktuellen Wortes mit dessen letztem Zeichen
  • $ zum Ende der Zeite mit dem letzten Zeichen

Benutzt Du die Bewegung ohne einen Operator, bewegt sich einfach der Cursor an die entsprechende Stelle.

Zähler für Bewegungen

Zähler werden vor den Bewegungsschritt geschrieben. Also z.B.:

  • 2w: setzt den Cursor zwei Wörter weiter
  • 3e: bewegt den Cursor ans Ende des 3 Wortes
  • 0: Anfang der Zeile

Zähler für Operationen

Die Eingabe einer Zahl mit einem Operator wiederholt diesen mehrfach.

  • d2w: löscht zwei Worte

Arbeiten auf Zeilen

  • dd: löscht eine ganze Zeile (und speichert sie im VIM-Register, um sie z.B. an anderer Stelle wieder einzufügen)
  • 2dd: löscht 2 Zeilen

Cursorposition

Um Dir die aktuelle Position in der geöffneten Datei anzuzeigen tippe <STRG>-G Willst Du eine spezielle Zeile im Dokument ansteuern tippe [Zeilennummer] G

Suchen

Text finden

Du kannst durch die Wahl des Operators vorwärts oder rückwärts nach einem Ausdruck suchen:

  • /[Such-Ausdruck] sucht vorwärts nach dem angegebenen Ausdruck
  • ?[Such-Ausdruck] sucht rückwärts nach dem angegebenen Ausdruck

Um zum nächsten Vorkommen des Ausdrucks zu gelangen tippe n.

Passende Klammern finden

Um eine gegenüberliegende Klammer zu finden musst Du den Cursor auf einer Klammer positionieren und dann % tippen.

Externe Kommandos ausführen

Manchmal ist es hilfreich oder notwendig, direkt aus dem Editor heraus ein externes Kommando abzusetzen. Das wird in VIM mit der Zeichenfolge

:![externer Befehl]

erledigt. Zum Abschließen des externen Befehls muss Enter gedrückt werden, um wieder zu VIM zurückzukehren.

Kurzform der Befehle

Hier findest Du die Übersicht nochmal als eigenen Artikel.

Bewegen

  • j,k,l,h: Bewegen des Cursors
  • 2w: 2 Worte vorwärts
  • 0: an den Anfang der Zeile springen
  • $: ans Ende der Zeile springen
  • G: Sprung zum Ende der Datei
  • gg: Sprung zum Anfang der Datei
  • [Zeilennummern]G: Sprung zur angegebenen Zeile
  • e: Sprung ans Ende eines Wortes

Speichern

  • :q!: VIM beenden (und die Änderungen verwerfen)
  • :wq: Änderungen speichern und VIM verlassen
  • <ESC: in den Normal-Modus wechseln
  • x: das Zeichen unter dem Cursor löschen

Suchen

  • /[Such-Ausdruck]: Suche vorwärts
  • ?[Such-Ausdruck]: Suche rückwärts
  • n: nächsten Vorkommen des Suchausdrucks
  • %: zeigt die korrespondierende Klammer an
  • :s/alt/neu
  • :set ic

Copy/Paste

  • v: Visuellen Modus einschalten
  • y: markierten Text kopieren
  • yw: ein Wort kopieren
  • p: kopierten Text einfügen

Einfügen/Anfügen

  • i: Text einfügen
  • A: Text anfügen
  • p: fügt Zeichen aus dem Speicher ein
  • rx: ersetzt das Zeichen unter dem Cursor durch ein x
  • :s/alt/neu/g: ersetzt alt durch neu

Löschen

  • dw: ein Wort löschen
  • d$: bis zum Ende der Zeile löschen
  • dd: ganze Zeile löschen

Undo

  • u: vorherige Aktion rückgängig machen
  • U: alle Änderungen einer Zeile rückgängig machen
  • STRG-R: Undo rückgängig machen