Files
2026-04-08 23:26:36 +02:00

6.9 KiB

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

Nutze "echtes" RegEx ("very magic"):

/\v...

zB

/\vab?c

findet abc und ac . Das würde mit herkömmlicher Vim RegEx nicht funktionieren

Suchen und ersetzen

:%s/\vfoo (ab?c)(bar)/bas \1 \2/

🔹 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:

:set number

Ausschalten:

:set nonumber

Toggle:

:set number!

🔹 Relative Zeilennummern

Einschalten:

:set relativenumber

Ausschalten:

:set norelativenumber

Toggle:

:set relativenumber!

🔹 Absolute + Relative kombinieren (Sehr beliebt 🔥)

Viele nutzen diese Kombination:

: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:

set number
set relativenumber

🔹 Smart Toggle Mapping (Optional )

Viele nutzen ein Keybinding:

nnoremap <leader>n :set number! relativenumber!<CR>

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 #:

:s/^/# /

Im Visual Mode einfach:

:'<,'>s/^/# /

👉 Fügt # am Anfang jeder markierten Zeile ein.


🔹 Auskommentieren

:'<,'>s/^# //

🔹 Noch schneller (ohne : tippen)

Markieren mit V, dann:

: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):

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:

vnoremap <leader>c :s/^/# /<CR>
vnoremap <leader>u :s/^# //<CR>

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
  • q: : öffne Befehlsbuffer
    • Dort kann man z.B. mit "+yy Befehle ins Clipboard kopieren