Hier ist ein kompaktes, aber vollständiges **VIM Cheat Sheet** 📝 --- ## 🔹 Modi in VIM |Modus|Bedeutung|Wechsel| |---|---|---| |**Normal Mode**|Navigation & Befehle|`Esc`| |**Insert Mode**|Texteingabe|`i`, `a`, `o`, etc.| |**Visual Mode**|Text markieren|`v`, `V`, `Ctrl+v`| |**Command Mode**|Speichern, Beenden, etc.|`:`| --- ## 🔹 Insert Mode Befehle |Befehl|Wirkung| |---|---| |`i`|Vor Cursor einfügen| |`a`|Nach Cursor einfügen| |`I`|Am Zeilenanfang einfügen| |`A`|Am Zeilenende einfügen| |`o`|Neue Zeile unterhalb| |`O`|Neue Zeile oberhalb| --- ## 🔹 Navigation (Normal Mode) ### Zeichenweise ``` h ← j ↓ k ↑ l → ``` ### Wortweise ``` w nächstes Wort b vorheriges Wort e Wortende ``` ### Zeilenweise ``` 0 Zeilenanfang ^ Erstes Nicht-Leerzeichen $ Zeilenende ``` ### Datei ``` gg Anfang der Datei G Ende der Datei :n Gehe zu Zeile n ``` --- ## 🔹 Löschen |Befehl|Wirkung| |---|---| |`x`|Zeichen löschen| |`dd`|Zeile löschen| |`dw`|Wort löschen| |`d$`|Bis Zeilenende löschen| |`d0`|Bis Zeilenanfang löschen| 💡 Kombination: `d` + Bewegung funktioniert immer (z.B. `d3w` = 3 Wörter löschen) --- ## 🔹 Kopieren & Einfügen |Befehl|Wirkung| |---|---| |`yy`|Zeile kopieren| |`yw`|Wort kopieren| |`p`|Nach Cursor einfügen| |`P`|Vor Cursor einfügen| #### Register Vor alle Kopieren oder Einfügen Befehle kann ein `"3` gestellt werden, um ins 3. Register zu schreiben bzw. daraus heraus zu lesen. Z.b. kopiert `"7yw` das Wort ins 7. Register und `"4p` fügt das 4. Register nach dem Curser ein. 💡 Das spezielle Register `+`/`*` ist das System-Clipboard, sehr Praktisch zum Austausch von Text mit anderen Programmen Alle Register ansehen: `:reg` 💡 Das spezielle Register `%` enthält den aktuellen Dateipfad -> aktuelle Dateipfad in System-Clipboard: `:let @+=@%`. --- ## 🔹 Undo / Redo ``` u Undo Ctrl+r Redo ``` --- ## 🔹 Visual Mode |Befehl|Wirkung| |---|---| |`v`|Zeichenweise markieren| |`V`|Ganze Zeile markieren| |`Ctrl+v`|Block markieren| Nach Markierung: ``` d löschen y kopieren > einrücken < ausrücken ``` --- ## 🔹 Suchen & Ersetzen ``` /text Vorwärts suchen ?text Rückwärts suchen n Nächstes Ergebnis N Vorheriges Ergebnis ``` Ersetzen: ``` :%s/alt/neu/g Ganze Datei :s/alt/neu/g Aktuelle Zeile :%s/alt/neu/gc Mit Bestätigung ``` --- ## 🔹 Speichern & Beenden ``` :w Speichern :q Beenden :wq Speichern & Beenden :x Speichern & Beenden :q! Ohne Speichern beenden ``` --- ## 🔹 Fenster & Tabs ``` :split Horizontal teilen :vsplit Vertikal teilen Ctrl+w w Zwischen Fenstern wechseln :tabnew Neuer Tab gt Nächster Tab gT Vorheriger Tab ``` --- ## 🔹 Nützliche Shortcuts ``` . Letzte Aktion wiederholen >> Zeile einrücken << Zeile ausrücken ciw Wort ändern cc Zeile ändern J Zeilen zusammenführen ``` --- ## 🔹 Makros ``` qa Aufnahme in Register a starten q Aufnahme stoppen @a Makro a ausführen @@ Letztes Makro wiederholen ``` --- ## 🔹 Zahlen-Präfixe (Sehr wichtig!) Viele Befehle lassen sich multiplizieren: ``` 3dd 3 Zeilen löschen 5w 5 Wörter vor 2yy 2 Zeilen kopieren ``` --- # Zeilennummern aus- und anschalten --- ## 🔹 Absolute Zeilennummern ### Einschalten: ```vim :set number ``` ### Ausschalten: ```vim :set nonumber ``` ### Toggle: ```vim :set number! ``` --- ## 🔹 Relative Zeilennummern ### Einschalten: ```vim :set relativenumber ``` ### Ausschalten: ```vim :set norelativenumber ``` ### Toggle: ```vim :set relativenumber! ``` --- ## 🔹 Absolute + Relative kombinieren (Sehr beliebt 🔥) Viele nutzen diese Kombination: ```vim :set number relativenumber ``` 👉 Ergebnis: * Aktuelle Zeile = **absolute Nummer** * Alle anderen Zeilen = **relative Nummern** Beispiel: ``` 8 2 1 10 ← aktuelle Zeile 1 2 3 ``` Das ist perfekt für Bewegungen wie: ``` 5j 3k ``` --- ## 🔹 Dauerhaft aktivieren (.vimrc) In deiner `~/.vimrc`: ```vim set number set relativenumber ``` --- ## 🔹 Smart Toggle Mapping (Optional ⭐) Viele nutzen ein Keybinding: ```vim nnoremap n :set number! relativenumber! ``` Dann kannst du mit: ``` \ n ``` (beim Standard-`leader`) beide gleichzeitig toggeln. --- # Block Aus- und Einkommentieren --- # 🔹 1️⃣ Rein mit Vim (ohne Plugin) ## ✅ Ganze Zeilen im Visual Mode kommentieren ### Schritt 1: Block markieren * `V` → Zeilenweise markieren * `j / k` → Bereich wählen ### Schritt 2: Kommentarzeichen einfügen Beispiel für `#`: ```vim :s/^/# / ``` Im Visual Mode einfach: ```vim :'<,'>s/^/# / ``` 👉 Fügt `# ` am Anfang jeder markierten Zeile ein. --- ## 🔹 Auskommentieren ```vim :'<,'>s/^# // ``` --- ## 🔹 Noch schneller (ohne `:` tippen) Markieren mit `V`, dann: ```vim :s/^/# / ``` Vim setzt `'<,'>` automatisch. --- # 🔹 2️⃣ Noch effizienter: Visual Block Mode (Sehr elegant ⚡) Perfekt für feste Kommentarzeichen wie `#`, `//`, `--`. ### Schritt 1 ``` Ctrl + v ``` ### Schritt 2 Mit `j/k` mehrere Zeilen markieren (nur Spalte 0) ### Schritt 3 ``` Shift + i # Esc ``` 💥 Vim fügt das in alle markierten Zeilen ein. --- ## 🔹 Entfernen mit Block Mode 1. `Ctrl + v` 2. Erste 2 Zeichen (`# `) markieren 3. `d` --- # 🔹 3️⃣ Beste Lösung: Plugin (Empfohlen 🔥) Wenn du regelmäßig kommentierst → nimm ein Plugin. Sehr beliebt: * vim-commentary von Tim Pope ### Installation (mit vim-plug): ```vim Plug 'tpope/vim-commentary' ``` ### Nutzung: * `gcc` → aktuelle Zeile toggeln * `gc` (im Visual Mode) → Block toggeln 💎 Vorteil: * erkennt automatisch Kommentarzeichen je nach Dateityp * funktioniert mit `//`, `#`, `--`, `/* */`, etc. --- # 🔹 4️⃣ Absolute Power-User Lösung (Ohne Plugin, aber smart) In `.vimrc`: ```vim vnoremap c :s/^/# / vnoremap u :s/^# // ``` Dann: ``` \c → kommentieren \u → auskommentieren ``` --- # 🔥 Meine Empfehlung | Wenn du... | Lösung | | ----------------------------- | ----------------- | | Nur selten kommentierst | Visual Block Mode | | Viel programmierst | vim-commentary | | Minimalistisch bleiben willst | eigenes Mapping | --- # Verschiedenes - `%`: zur nächsten Klammer - `TOhtml`: HTML Export - `:ls`: Buffer anzeigen -> `:b 3` den 3. Buffer öffnen - `.` : letzte Aktion wiederholen - `:e path/to/file` öffnet Datei, nur `:e` aktualisiert die geöffnete Datei, `:e!` verwirft dabei alle Änderungen