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