Nachdem ich meine .vimrc aufgefrischt habe, bin ich wieder auf etliche tolle Tutorials für Vim gestossen, so dass es an der Zeit ist mal das Wichtigste (für mich) zusammen zu fassen.
Die Grundlagen und die verschiedenen Modi kann man sehr gut auf dem ubuntuusers Wiki lesen, daher lasse ich mich nicht näher darauf ein. Viele der Befehle wiederholen sich in verschiedenen Zusammenhängen, so dass man recht intuitiv vorgehen kann.
Es gibt auch noch den vimtutor, den man einfach in er Kommandozeile aufrufen kann. Er führt interaktiv durch die verschiedenen Tasten und Befehle. Nach zirka 30 Minuten hat man die Grundbegriffe durchgearbeitet.
Update 29.09.2011 via Linuxundich gibt es auf openvim.com ein webbasiertes Tutorial auf englisch, das auch einige der grundlegenden Begriffe vorstellt.
Inhalt
- Befehle / Kommandos
- Navigieren
- Editieren
- Löschen (Ausschneiden)/ Delete (Cut)
- Rückgängig und Wiederholen/ Undo & Redo
- Kopieren (yank) und Einfügen / Copy & Paste
- Zwischenspeicher / Puffer
- Suchen und Ersetzen / Find & Replace
- Markierungen / Bookmarks
- Text falten (folding)
- Fenster (windows mode)
- Tab / Reiter
- Sonderzeichen
Befehle / Kommandos
- :q - Vim beenden (wenn keine Änderungen vorgenommen wurden)
- :q! - Vim beenden und Änderungen verwerfen
- :wq / ZZ - Vim beenden und speichern
- :w - Datei speichern
- :e! {datei} - Datei zum editieren laden. z.B. :e! .vimrc
- :r {datei} - {datei} ab aktuellem Cursor einfügen
- :r! {command} - Ausgabe des Kommandos einfügen. z.B. :r! ls -a
- :sh - Shell starten
- :!{command} - Das Kommando {command} wird ausgeführt. z.B. :!sort
Navigieren
- hjkl - rechts, runter, hoch, links. Es funktionieren meist aber auch die Pfeiltasten
- w - Ein Wort weiterspringen (nach rechts)
- b - Ein Wort zurückspringen (nach links)
- ( - An den Satzanfang springen (nach links)
- ) - An das Satzende springen (nach rechts)
- zt - Aktuelle Zeile an den Bildschirmanfang (oben) setzen- Top
- zz - Aktuelle Zeile in die Bildmitte setzen- Zentrum
- zb - Aktuelle Zeile an das Bildschirmende (unten) setzen - Bottom
- M - Cursor in Bildmitte setzen
Editieren
- i/I - Insert am aktuellen Zeichen/ Insert am Zeilenanfang
- a/A - Anhängen nach dem aktuellen Zeichen / Am Zeilenende anhängen
- r/R - Überschreiben des aktuellen Zeichens / Überschreiben bis Zeilenende
- cw - Aktuelles Wort löschen und in den Insert Modus schalten
- o/O - Leerzeile unter - / Leerzeile über der aktuellen Zeile einfügen
- C - Ab aktueller Position bis Zeilenende löschen und in den Insert Modus schalten
- Strg+w - zwei Zeilen zusammenfügen
Löschen (Ausschneiden)/ Delete (Cut)
- x/X - Löscht (Ausschneiden) das Zeichen unter dem Cursor / Vor dem Cursor
- dd/D - Löscht(Ausschneiden) aktuelle Zeile / bis Zeilenende
- d{num}d - Löscht (Ausschneiden) soviele Zeilen, wie in {num} angegeben. z.B. d5d
- dw - Löscht (Ausschneiden) bis Wortende
- d$ - Löscht (Ausschneiden) bis Zeilenende
- J - Zwei Zeilen zusammenfassen
Rückgängig und Wiederholen/ Undo & Redo
- u - Macht Änderungen rückgängig. Die Historie speichert 1000 Vorgänge
- U - Zuletzt geänderte Zeile wieder herstellen
- Strg+r - Letzten rückgängig gemachten Befehl wiederholen
- . - Letzten Befehl wiederholen
Kopieren (yank) und Einfügen / Copy & Paste
- v - Zeichenweise einen Bereich markieren - kopieren mit Eingabe
- V - Zeilenweise einen Bereichmarkieren - kopieren mit Eingabe
- ggVG - alles auswählen
- Strg+v - Bereich (horizontal+vertikal) auswählen - kopieren mit Eingabe
- yy - Die aktuelle Zeile kopieren
- yw - Ein einzelnes Wort kopieren
- y( - Von aktuellem Zeichen bis Satzanfang kopieren
- y) - Von aktuellem Zeichen bis Satzende kopieren
- Zum Ausschneiden kann man statt der Eingabetaste d drücken
Zwischenspeicher / Puffer
- Es stehen 36 Puffer zur Verfügung [1..0] und [a..z]
- “{puffer}y - Markierter Text wird in den Puffer {puffer} gespeichert z.B. “fy (Puffer f)
- “{puffer}p/P - Puffer {puffer} wird nach / vor dem aktuellen Zeichen/Zeile eingefügt. z.B. “fp (Puffer f)
Suchen und Ersetzen / Find & Replace
- /{suchbegriff} - Der {suchbegriff} wird gesucht. z.B. /Markierung
- n/b - Vorwärts / Rückwärts suchen
- :%s/{alt}/{neu}/g - Sucht und ersetzt jedes Vorkommen von {alt} mit {neu} in der kompletten Datei
Markierungen / Bookmarks
- m{Key} - Die m Taste plus ein {Key} (Buchstabe) für die Markierung [a..Z]. z.B. ma
- ‘{Key} - Springt in die Zeile der Markierung
- `{Key} - Springt direkt auf das Zeichen, auf dem die Markierung gesetzt wurde
- :marks - Alle Markierungen auflisten
- :jumps - Alle Sprungmarken auflisten
Text falten (folding)
- zfm - Erzeuge Faltung
- zo - Öffne Faltung wieder
- zR - Öffne alle Faltungen
- zc - Schließe Faltung wieder
Fenster (windows mode)
- Strg+ws - Fenster waagrecht teilen (:split)
- Strg+wn - Neues+leeres Fenster erzeugen (:new)
- Strg+wo - Aktuelles Fenster wird einziges Fenster (:on)
- Strg+wj - In das untere Fenster wechseln
- Strg+wk - In das obere Fenster wechseln
- Strg+wv - Fenster senkrecht teilen (:vsplit)
- Strg+wh - In das linke Fenster wechseln
- Strg+wl - In das rechte Fenster wechseln
Tab / Reiter
- vim -p {datei1} {datei2} {datei3} - öffnet die 3 angegebenen Dateien in Tabs
- :tabe {datei} - Neues Tab öffnen und Datei {datei} laden.
- gt - Zum nächsten Tab springen
- gT - Zum vorherigen Tab springen
- :tabr - Zum ersten Tab springen
- :tabl - Zum letzten Tab springen
- :tabm {n} - Verschiebt das aktuelle Tab auf Position {n}
- :tabdo {vi command} - Führt das Kommando in allen geöffneten Tabs aus
Sonderzeichen
- :digraph - Zeigt die komplette Sonderzeichentabelle
- Str+k+{code} - {code} ist der Code aus der Sonderzeichentabelle
Eine noch ausführlichere Übersicht gibt es als PDF Datei zum runterladen hier und hier und hier.