« Paswortlos mit ssh keysVim mal wieder »

Vim mal praktisch

15.02.09 | von hoergen [mail] | Kategorien: Chiphead, Programme, Linux

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.

13 Kommentare

Kommentar von: JuLeS [Besucher]
Nur zur Vervollständigung:
"dd" löscht die zeile nicht, sondern schneidet sie aus (mit "p" kann sie dann wieder eingefügt werden).
Und was ich auch praktisch finde ist "d$" -> Löschen ab Cursor bis Zeilenende.

"dd" wird überall "falsch" angegeben...warum nur?
16.02.09 @ 08:15
Kommentar von: hoergen [Mitglied] E-Mail · http://blog.hoergen.org
d$ habe ich total vergessen mit anzugeben. Stimmt das dd wird überall als Löschen angegeben. Ich habe mal Ausschneiden mit dazu geschrieben, dann ist das wenigstens so eine Brücke zwischen der sonstigen und der unsrigen Dokumentation ;-)
16.02.09 @ 08:21
Kommentar von: linopolus [Besucher] E-Mail
Danke so eine Übersicht suche ich schon lange!
16.02.09 @ 09:17
Kommentar von: detru [Besucher] E-Mail
wow, danke für die Referenz...wusste gar nicht das vim so mächtig ist.

(ich kannte nur ":q :q! :w :wq")
16.02.09 @ 09:25
Kommentar von: hoergen [Mitglied] E-Mail · http://blog.hoergen.org
Mächtig ist gar kein Ausdruck. Das ist nur ein minimaler Teil von dem was vim kann. Aber zum alltäglichen Arbeiten reicht mir diese Referenz. Da sind dann noch Macros, Skripte, Plugins und noch jede Menge anderer super Sachen. Achja, dass vim mit regulären Ausdrücken arbeiten kann ist eigentlich selbstverständlich.
16.02.09 @ 09:28
Kommentar von: detru [Besucher] E-Mail
hmmm...dann ist das Ding ja schon fast vergleichbar mit OpenOffice o_0
16.02.09 @ 12:07
Kommentar von: hoergen [Mitglied] E-Mail · http://blog.hoergen.org
Hehe .. vielleicht. Nur das WYSWIG ist leicht unterschiedlich ;)
16.02.09 @ 12:29
Kommentar von: Ralf [Besucher] E-Mail
Und sehr fein ist, dass es GVim auch als PortableApplication gibt. :-)
Zum Beispiel hier: http://portablegvim.sourceforge.net/
16.02.09 @ 19:13
Kommentar von: helmeloh [Besucher] E-Mail · http://www.hirner.at
Habe es auf Yigg schon gesagt (als Apache):
Ja die Liste ist übersichtlich und beschrängt sich auf das Wesentliche und es gibt einen Link zur vim.rc; mir fehlt nur das ":set noai" bei den Kommandos.
17.02.09 @ 06:18
Kommentar von: hoergen [Mitglied] E-Mail · http://blog.hoergen.org
":set ai" oder ":set noai" ist je nach Einsatzzweck zu bevorzugen. In meiner .vimrc bevorzuge ich ":set ai", da ich überwiegend das automatische Einrücken gebrauchen kann. Aber das ":set ai" ist ja auch mal eben schnell eingegeben.
17.02.09 @ 07:44
Kommentar von: just [Besucher]
Ne, vim ist viel maechtiger als OO oder MSO
17.02.09 @ 10:10
Kommentar von: Blazzer [Besucher] E-Mail
Eine richtig kleine "Quick-Referenz".
Sehr gut gemacht!
______________________________________
Aber trotz dessen habe ich ein kleines Problem....
Ich bekommen das mit markieren, kopieren und einfügen nicht hin! (Nur mit der Tastatur natürlich).
Du schreibst: v - Zeichenweise markieren und mit der Eingabetaste kopieren. Aber wie füge ich den Text woanders ein?
16.09.09 @ 15:01
Kommentar von: hoergen [Mitglied] E-Mail · http://blog.hoergen.org
mit y kopieren und mit p oder P wieder einfügen
16.09.09 @ 15:55

Einen Kommentar hinterlassen


Ihre E-Mail-Adresse wird nicht auf dieser Seite angezeigt.

Ihr URL wird angezeigt.
SchlechtExzellent
(Zeilenumbrüche werden zu <br />)
(Name, E-Mail-Adresse & Webseite)
(Benutzern erlauben, Sie durch ein Kontaktformular zu kontaktieren (Ihre E-Mail-Adresse wird nicht weitergegeben))