Files
it-know-how/Vim Cheatsheet.md
T
2026-03-27 12:58:01 +01:00

215 lines
5.0 KiB
Markdown
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## Modi
```text
i In den Insert-Modus (vor Cursor)
I Insert am Zeilenanfang
a Insert nach Cursor
A Insert am Zeilenende
o Neue Zeile unterhalb + Insert
O Neue Zeile oberhalb + Insert
<Esc> Zurück in Normalmodus
v Visueller Modus (Zeichenweise)
V Visueller Modus (Zeilenweise)
<C-v> Visueller Blockmodus
```
## Navigation (Normalmodus)
```text
h j k l Links / runter / hoch / rechts
0 Zeilenanfang
^ Erstes nicht-leer Zeichen
$ Zeilenende
w Zum nächsten Wortanfang
b Zum vorherigen Wortanfang
e Zum Wortende
W B E Wie oben, aber Worte durch Leerzeichen getrennt
gg Erste Zeile
G Letzte Zeile
ngg / nG Zu Zeile n
H Oberer Bildschirmrand
M Mittlerer Bildschirmrand
L Unterer Bildschirmrand
Ctrl-u Halbe Seite hoch
Ctrl-d Halbe Seite runter
Ctrl-b Seite hoch
Ctrl-f Seite runter
```
## Basis-Bearbeitung
```text
x Zeichen unter Cursor löschen
X Zeichen links vom Cursor löschen
r<char> Zeichen ersetzen
dd Zeile löschen (cut)
D Bis zum Zeilenende löschen
cc Zeile ändern (delete + insert)
C Bis zum Zeilenende ändern
yy Zeile kopieren
Y Alias für yy
p Einfügen NACH Cursor/Zeile
P Einfügen VOR Cursor/Zeile
u Undo
Ctrl-r Redo
J Nächste Zeile an aktuelle anhängen
>> Zeile einrücken (indent)
<< Zeile ausrücken (unindent)
```
## Mit Counts & Bewegungen
Viele Befehle funktionieren mit einer Anzahl (count) und einer Bewegung:
```text
3w 3 Wörter vor
5j 5 Zeilen runter
d3w 3 Wörter löschen
c$ Bis Zeilenende ändern
y0 Bis Zeilenanfang kopieren
```
## Textobjekte (im Normal- / Visuellen Modus)
```text
aw A word (inkl. Leerzeichen)
iw Inner word
as A sentence
is Inner sentence
ap A paragraph
ip Inner paragraph
a" / i" Text in Anführungszeichen
a' / i' Text in einfachen Quotes
a) / i) Text in Klammern (usw. für {}, [], <>)
Beispiele:
ci" Inhalt von "..." ändern
da( Klammerausdruck inklusive Klammern löschen
viw Wort unter Cursor markieren
```
## Suchen & Ersetzen
```text
/word Vorwärts nach „word“ suchen
?word Rückwärts suchen
n Nächster Treffer
N Vorheriger Treffer
* Wort unter Cursor vorwärts suchen
# Wort unter Cursor rückwärts suchen
:%s/alt/neu/g In gesamter Datei ersetzen
:%s/alt/neu/gc Mit Bestätigung
:.,$s/alt/neu/g Von aktueller Zeile bis Ende
:10,20s/alt/neu/g In Zeilen 1020
```
## Dateien, Buffers, Splits & Tabs
```text
:e datei Datei öffnen
:w Speichern
:w name Unter anderem Namen speichern
:q Beenden
:q! Beenden ohne Speichern
:wq / :x Speichern und beenden
:qa Alle Fenster schließen
:qa! Alle schließen ohne Speichern
" Buffer (Dateien im Speicher)
:ls Buffer-Liste
:buffer n Buffer n öffnen
:bnext / :bn Nächster Buffer
:bprev / :bp Vorheriger Buffer
:bdelete Buffer schließen
" Splits
:split datei Horizontaler Split
:vsplit datei Vertikaler Split
Ctrl-w s Split horizontal
Ctrl-w v Split vertikal
Ctrl-w w Zum nächsten Split
Ctrl-w h/j/k/l Split wechseln
Ctrl-w q Split schließen
" Tabs
:tabnew Neuer Tab
:tabclose Tab schließen
:tabnext / :tn Nächster Tab
:tabprev / :tp Vorheriger Tab
```
## Visual Mode Aktionen
```text
v / V / Ctrl-v Auswahl starten
y Auswahl kopieren
d Auswahl löschen
c Auswahl ändern
> Einrücken
< Ausrücken
= Auto-Indent (z.B. für Code)
: Befehl auf Auswahl anwenden
(Bereich wird automatisch eingetragen)
```
## Makros & Wiederholung
```text
. Letzte Änderung wiederholen
q<a> Macro in Register a aufzeichnen
(z.B. qa)
... Aktionen ausführen
q Aufzeichnung beenden
@a Macro a ausführen
3@a Macro 3x ausführen
@@ Letztes Macro wiederholen
```
## Register
```text
"0 Zuletzt kopiertes (y) ohne delete
"1"9 Verlaufsregister
"" Default-Register
"+ System-Clipboard (kopieren/einfügen mit OS)
"* Auswahl-Clipboard (unter Linux/X11)
Beispiele:
"ayw Wort in Register a kopieren
"ap Inhalt von Register a einfügen
"+y In System-Clipboard kopieren
"+p Aus System-Clipboard einfügen
```
## Kommandomodus (Ex-Befehle)
```text
:!cmd Externen Befehl ausführen
:r !cmd Ausgabe von cmd einfügen
:r datei Datei unter Cursor-Zeile einfügen
:set nu Zeilennummern an
:set nonu Zeilennummern aus
:set relativenumber Relative Nummern
:set tabstop=4 shiftwidth=4 expandtab
```
## Einfache .vimrc-Beispiele
```vim
" Zeilennummern
set number
set relativenumber
" Einrückung
set tabstop=4
set shiftwidth=4
set expandtab
set smartindent
" Suche
set ignorecase
set smartcase
set hlsearch
set incsearch
" Maus
set mouse=a
```