215 lines
5.0 KiB
Markdown
Executable File
215 lines
5.0 KiB
Markdown
Executable File
## 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 10–20
|
||
```
|
||
## 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
|
||
```
|