# Bewegung
H       linke obere Ecke des Bildschirmfensters
M       Anfang der Zeile in der Mitte des Bildschirms
L       Cursor am Bildschirmende positionieren


# Insert/Replace Modus
I       am Anfang der Zeile einfuegen
s       Zeichen unter dem Cursor ersetzen und in insert Modus wechseln
S       Zeile ersetzen


# Befehle
:n              zu Zeile Nummer n springen
:se nu/nonu     Zeilennummern anzeigen/ausblenden (set numbers/nonumbers)
:n,m#           Zeile n bis Zeile m mit Zeilennummern anzeigen
:se ai/noai     Zeilen (nicht) automatisch einruecken (set autoindent/noautoindent)
:noh            Schaltet die Hervorhebung von Suchergebnissen ab
:g/^$/d         alle Leerzeilen loeschen
:g/^_*$/d       alle Zeilen loeschen, die entweder leer sind oder nur Leerzeichen enthalten (_=Leer)
:f              zeige Name und Status des aktuellen Files an


# Text kopieren & verschieben
nyy/nY          Aktuelle oder n Zeilen in den Buffer kopieren
"xnyy/xnY       Aktuelle oder n Zeilen in Buffer x kopieren


:%s/<pat>/<str>/g       Ersetze in der ganzen Datei pat durch str

# Zeichen loeschen
:%s/^<pat>//g           Erste Zeichen loeschen
:%s/.$<pat>//g          Letzte Zeichen loeschen


# Zeilen loeschen
:[range]g[lobal]/{pattern}/[Befehl]
:g/<pat>/d      Loescht alle Zeilen in der pat vorkommt
:g/<pat>/       Zeigt alle Zeilen an, in der pat vorkommt
:g!/<pat>/d     Loescht alle Zeilen in der pat _nicht_ vorkommt
:g/^\s*$/d      Loescht alle Leerzeilen
:g/^$/d         Loescht alle Leerzeilen


# Zeilen sortieren
:%!sort         Sortiert nach Buchstaben (s. man sort)
:%!sort -n      Sortiert nach Zahlen (s. man sort)


# Mit mehreren Dateien arbeiten
:e filename     Eine Datei in einem neuen Buffer editieren
:bnext (or :bn) Gehe zum naechsten Buffer
:bprev (of :bp) Gehe zun vorigen Buffer
:bd             Einen Buffer schliessen
:sp filename    Eine neue Datei oeffen und das Fenster horizontal splitten
:vs filename    Eine neue Datei oeffen und das Fenster vertikal splitten
ctrl+ws         Ein Fenster horizontal splitten
ctrl+wv         Ein Fenster vertikal splitten
ctrl+ww         Zwischen den Fenstern umschalten
ctrl+wq         Ein Fenster verlassen


# Einzelne Buchstaben umschlaten klein <-> gross
~~

# Macros
1. q<Buchstabe>   Starte Macro Aufzeichnung, wird unter <Buchstabe> gespeichert
2. q              Ende Macro Aufzeichnung
3. @<Buchstabe>   Macro aufrufen

@@                     gleiches Macro nochmal aufrufen
<Nummer>@<Buchstabe>   Macro <Nummer>-mal ausführen
:reg <Buchstabe>       Macro ansehen

:map                                    zeigt alle definierten Makros an
:map <Makroname> <Kommandofolge>        definiert ein Makro
:unm <Makroname>                        loescht ein Makro

Beispiel: legt "Mit freundlichen Grüßen" auf das Makro fg
:map fg iMit freundlichen Grüßen<ESC>
danach kann man im KommandoModus einfach fg eingeben und erhaelt "Mit freundichen Grüßen"


# Textbloecke markieren --> innerhalb des _markierten_ Blocks kann dann der Text manipuliert werden
v               Einzelne Zeichen markieren
V               Einzelne Zeilen markieren
Ctrl-V          Blockweise Markierung auswaehlen


Eingabe von Steuerzeichen: <CTR-V><ESC> -> gibt <ESC> ein -> ^[

# vimrc
# durch Eingabe von F8 -> fuegt Datum und Text ein
map! <F8> <C-R>=strftime('# %d.%m.%Y - Mustermann - ')<CR>