## 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"`: **C**hange **I**nside **"**: Löscht den Inhalt zwischen Anführungszeichen und geht in den Insert-Modus. * `da(`: **D**elete **A**round **(**: Löscht die Klammern inklusive Inhalt. * `yiw`: Kopiere das aktuelle Wort (**Y**ank **I**nside **W**ord). --- ## 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. ```vim " 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. ```vim :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). ```vim :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: ```vim 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.