Files
it-know-how/(Neo) Vim/Vim Guide.md
T
2026-04-20 17:11:37 +02:00

5.8 KiB
Raw Blame History

j## 1. Die Basis: Modi & Navigation Vim basiert auf dem Konzept von Modi. Um Befehle auszuführen, musst du fast immer im Normal Mode sein.

Modi-Wechsel

  • i / a: Insert-Modus (vor/nach Cursor).
  • I / A: Insert am Zeilenanfang / Zeilenende.
  • o / O: Neue Zeile unterhalb / oberhalb einfügen.
  • Esc: Zurück in den Normal-Modus.
  • v / V / Ctrl+v: Visueller Modus (Zeichen / Zeile / Block).

Navigation (Normal Mode)

  • Grundbewegung: h (links), j (runter), k (hoch), l (rechts).
  • Wortweise: w (nächstes Wort), b (vorheriges), e (Wortende).
  • Zeilenweise: 0 (Anfang), ^ (erstes Zeichen), $ (Ende).
  • Datei-Sprünge: gg (Anfang), G (Ende), :n (Zeile n).
  • Scrollen: Ctrl+u / Ctrl+d (Halbe Seite hoch/runter).
  • Klammern: % springt zur korrespondierenden Klammer (), [], {}.

2. Bearbeitung & Text-Objekte

Die wahre Stärke von Vim liegt in der Kombination von Operatoren und Bewegungen/Objekten.

Basis-Operationen

  • x: Zeichen löschen.
  • dd: Ganze Zeile löschen (Ausschneiden).
  • yy: Zeile kopieren (Yank).
  • p / P: Einfügen nach / vor dem Cursor.
  • u / Ctrl+r: Undo / Redo.
  • .: Die letzte Aktion wiederholen.

Das "Verb + Adjektiv + Nomen" Prinzip

Viele Befehle folgen dem Muster: [Zahl] + [Operator] + [Textobjekt/Bewegung].

  • 3dw: Lösche 3 Wörter.
  • ci": Change Inside ": Löscht den Inhalt zwischen Anführungszeichen und geht in den Insert-Modus.
  • da(: Delete Around (: Löscht die Klammern inklusive Inhalt.
  • yiw: Kopiere das aktuelle Wort (Yank Inside Word).

3. Suche & Ersetzen (Regex & "Magic")

Suchen in der aktuellen Datei

  • /muster: Vorwärts suchen.
  • ?muster: Rückwärts suchen.
  • n / N: Nächster / Vorheriger Treffer.
  • * / #: Sucht das Wort unter dem Cursor vorwärts / rückwärts.

Ersetzen (Substituieren)

  • :%s/alt/neu/g: Ersetzt alle Vorkommen in der Datei.
  • :%s/alt/neu/gc: Ersetzt mit Bestätigung für jeden Treffer.

RegEx & Very Magic

Vim nutzt standardmäßig eine eigene RegEx-Syntax. Mit \v (very magic) nutzt du eine Syntax, die moderneren Sprachen (wie Python/JS) ähnelt.

" Findet abc oder ac (das ? ist in very magic ein Metazeichen)
/\vab?c

4. Projektweites Find & Replace (Neovim & Telescope)

Dies ist ein Workflow für umfassendes Refactoring über viele Dateien hinweg.

Schritt 1: Suchen & Filtern

  1. Starte Telescope: :Telescope live_grep.
  2. Suche nach dem Begriff.
  3. Sende Ergebnisse an die Quickfix-Liste: Ctrl + q.

Schritt 2: Massen-Ersetzung mit :cdo

Der Befehl :cdo führt ein Kommando für jeden Eintrag in der Quickfix-Liste aus.

:cdo s/alter_begriff/neuer_begriff/gc | update
  • gc: Global in der Zeile ersetzen, mit Bestätigung.
  • | update: Speichert die Datei sofort, wenn eine Änderung vorgenommen wurde.

Schritt 3: Zeilen löschen (Spezialfall)

Wenn du Zeilen, die ein Muster enthalten, komplett löschen willst, ist :cfdo (pro Datei) robuster als :cdo (pro Treffer).

:cfdo g/muster/d | update

5. Multi-File Suche mit :vimgrep

Wenn du kein Telescope nutzt, ist :vimgrep der integrierte Weg.

  • :vimgrep /muster/ **/*.py: Sucht rekursiv in allen Python-Dateien.
  • :copen: Öffnet das Quickfix-Fenster, um die Ergebnisse zu sehen.
  • :cn / :cp: Springe zum nächsten/vorherigen Treffer.

6. Register & Clipboard

Vim hat mehrere "Ablagen" (Register).

  • "ayw: Kopiere Wort in Register a.
  • "ap: Füge Inhalt aus Register a ein.
  • "+y: Kopiere in das System-Clipboard (Wichtig für Austausch mit anderen Apps!).
  • :reg: Zeige alle aktuellen Registerinhalte an.
  • "%: Enthält den Pfad der aktuellen Datei.

7. Effizienz-Booster: Makros & Markierungen

Makros (Automatisierung)

  • qa: Aufnahme in Register a starten.
  • q: Aufnahme stoppen.
  • @a: Makro a abspielen.
  • @@: Das letzte Makro wiederholen.

Markierungen (Ergänzung)

Mit Markierungen kannst du schnell zu bestimmten Stellen springen.

  • ma: Setzt eine Markierung a an der aktuellen Position.
  • 'a: Springt direkt zur Markierung a.

8. Fenster, Tabs & Buffer

Vim verwaltet Dateien in Buffern. Windows (Splits) und Tabs sind nur Ansichten darauf.

  • :ls: Alle offenen Buffer anzeigen.
  • :b 3: Zum 3. Buffer wechseln.
  • :split / :vsplit: Horizontaler / Vertikaler Split.
  • Ctrl+w w: Zwischen Fenstern wechseln.
  • :tabnew: Neuer Tab.
  • gt / gT: Nächster / Vorheriger Tab.

9. Visual Block Mode & Kommentieren

Der Block-Modus (Ctrl+v) ist ideal, um Textspalten zu bearbeiten.

Block-Kommentieren (Manuell)

  1. Ctrl+v drücken und Zeilen nach unten markieren.
  2. Shift+i (Insert am Anfang des Blocks).
  3. Kommentarzeichen eingeben (z. B. # ).
  4. Esc drücken die Änderung wird auf alle Zeilen angewendet.

Plugin-Empfehlung: vim-commentary

Mit diesem Plugin reicht ein Befehl:

  • gcc: Kommentiert die aktuelle Zeile um/aus.
  • gc (im Visual Mode): Kommentiert den markierten Block.

10. Konfiguration (.vimrc / init.lua)

Einige Standard-Einstellungen, die jeder Power-User haben sollte:

set number           " Absolute Zeilennummer der aktuellen Zeile
set relativenumber   " Relative Nummern für alle anderen Zeilen (ideal für 5j, 3k)
set expandtab        " Leerzeichen statt Tabs
set tabstop=4        " Tab-Breite
set ignorecase       " Suche ignoriert Groß/Kleinschreibung...
set smartcase        " ...außer du tippst einen Großbuchstaben

Profi-Tipp: Befehlsbuffer

Wenn du einen komplexen Ex-Befehl (mit :) getippt hast und ihn bearbeiten willst, drücke im Normal-Modus q:. Es öffnet sich ein Fenster mit der Historie deiner Befehle, die du wie normalen Text bearbeiten und mit Enter neu ausführen kannst.