5.8 KiB
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
- Starte Telescope:
:Telescope live_grep. - Suche nach dem Begriff.
- 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 Registera."ap: Füge Inhalt aus Registeraein."+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 Registerastarten.q: Aufnahme stoppen.@a: Makroaabspielen.@@: Das letzte Makro wiederholen.
Markierungen (Ergänzung)
Mit Markierungen kannst du schnell zu bestimmten Stellen springen.
ma: Setzt eine Markierungaan der aktuellen Position.'a: Springt direkt zur Markierunga.
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)
Ctrl+vdrücken und Zeilen nach unten markieren.Shift+i(Insert am Anfang des Blocks).- Kommentarzeichen eingeben (z. B.
#). Escdrü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.