Benutzer-Werkzeuge

Webseiten-Werkzeuge


de:sysadmin:tools:vim

vim Spickzettel

Einstellungen des gerade laufenden VIM kann man sich mit

ESC:

set

ansehen (kurz: :set))

autoindent aus

Hilfe, beim Einfügen von viel Text wird der Text treppenförmig immer weiter eingerückt!

Dann ist warscheinlich autoindent eingeschaltet (in manchen Umgebungen default an).

  • automatisches Einrücken ausschalten mit: :set noai (lang: :set noautoindent)
  • automatisches Einrücken einschalten mit: :set ai (lang: :set autoindent)

formatoptions aus

Hilfe, beim Einfügen von Text mit Kommentar wird der nachfolgende Text auch mit Kommentarzeichen versehen

Dann sind vermutlich formatoptions eingeschaltet (in manchen Umgebungen per default an 1) )

  • den Spuk kann man ausschalten: :set fo=
    (lang: :set formatoptions=)

vim formatoptions

paste schön und einfach

schönes Einfügen geht aber am einfachsten mit:

:set paste

(danke für den Tipp, Tom)

entfernte Dateien bearbeiten (mit scp)

wenn man dies mit gvim macht:

gvim scp://user@remoteserver.org//home/user/file.php

(und syntax highlight eingeschaltet hat (:syn on)), kann man mit :hardcopy drucken - und auf meinem Farbdrucker kam das auch noch bunt raus.

editing remote files via scp in vim

Drucken

  • Drucken: :ha bzw :hardcopy
  • auf Drucker "FarbLaser1" drucken: set pdev=FarbLaser1
  • Zeilennummern drucken: set printoptions=number:y

vim print options

fester Umbruch

:set textwidth=60

ans Ende der Zeile gehen und den nächsten Buchstaben einfügen … oder mit Shift+v den Absatz markieren und mit g,q formatieren …

automatic word wrapping

Zahlen hochzählen / runterzählen

so vielleicht merk' ich es mir endlich, wenn ich es aufschreibe ..

  • Ctrl+a - Zahl hochzählen
  • Ctrl+x - Zahl runterzählen

lusticher Nebeneffekt: wenn die Zahl mit 0 anfängt, denkt vim das wäre oktal und zählt: 06 07 10 11 ..
(Hexadezimal funktioniert das auch: 0x09 0x0a 0x0b ..)

http://www.vim.org/tips/tip.php?tip_id=30

Tab-Completion

wenn das GanzLangeUndKomplizierteWort im Text schon vorkommt:

  • Wortanfang schreiben → Gan
  • Ctrl+N

suche Variablen-Deklaration

  • gd auf einer Variablen springt zur Deklaration der Variablen

man-Page aufrufen

  • (im Kommando-Modus): K - sucht die Manpage für das Wort, das gerade unter dem Cursor steht

vimdiff und window mode

  • Ctrl+w,w - um von einem in das andere "Fenster" zu springen

oder


Ctrl+w,k

nach oben

Ctrl+w,h

nach links

Ctrl+w,l

nach rechts

Ctrl+w,j

nach unten


  • :diffupdate - nach Änderungen aktualisieren (kurz: :diffu)
  • d,p - passe Unterschied an - auf anderer Seite (überschreibt Bereich im anderen Fenster mit dem lokalen (farblich markierten) Block)
  • d,o - passe Unterschied an - auf dieser Seite (überschreibe Bereich in diesem Fenster mit dem anderen (farblich markierten) Block)
  • :diffsplit datei3.txt - öffne weitere Datei im diffmode (default horizontaler Splitt)
  • :vert diffsplit datei3.txt - öffne weitere Datei im diffmode (vertikal)
  • CTRL+w < - Breite ändern

→ Siehe vim window operations und vimdiff

Suchen & Ersetzen

in den "ex-Modus" gehen ESC: (das : wird dann als Mini-Prompt angezeigt und dient in vielen Dokumentationen als Kurz-Anweisung "begebe dich in den Ex-Mode")

Schema:
<Bereich><Aktion><Trennzeichen><Suchmuster><Trennzeichen><Ersatzmuster><Trennzeichen><Optionen>

Ganz einfaches Suchen + Ersetzen

einmal orange mit blau ersetzen, im ganzen Text, mit Nachfragen:

%s/orange/blau/gc
  • % - Bereich: ganzer Text
  • s - Aktion_suchen+ersetzen
  • / - Trennzeichen: das übliche Trennzeichen ist / (man kann aber auch _ - , o.ä. verwenden - günstig wenn im Such- oder Ersatzmuster eben viele / vorkommen (z.B. HTML)- wichtig: beim selben Trennzeichen bleiben!)
  • orange - Suchmuster, hier ein einfacher Text (Gross- und kleinschreibung beachten)
  • blau - Ersatzmuster, hier ein einfacher Text
  • g - "global" in der Zeile, sonst wird nur das erste Vorkommen in der Zeile ersetzt
  • c - "check" - frag mich bei jedem Ersetzen, ob ich das wirklich will (dann mit y bestätigen … oder n ablehnen oder mit a im ganzen Text ohne weitere Nachfrage fortsetzen)

Suchen + Ersetzen komplexeres Beispiel

Zeilen, in denen der Text png vorkommt, mit HTML-Code zum Bilder-Einbinden umranden

:g/png/s,.*,<img src="&">, 
  • g/png/ - EX-Anweisung: in jeder Zeile, in der der Suchstring png gefunden wird
  • s - Suchen + Ersetzen
  • , - Trennzeichen (weil hier das / schon vorher als Mustertrennzeichen in der EX-Suche vorgekommen ist)
  • .* - in der Suche: Punkt: irgendein Zeichen, * beliebig oft
  • & - im Ersatzmuster: gefundenes Suchmuster (hier die ganze Zeile) wird wieder eingesetzt

Shell-Komandos

  • ESC:!ping -c1 localhost - Führe einen Befehl auf der Shell aus
  • ESC.:!ping -c1 localhost - Führe einen Shell-Befehl aus und ersetze die aktuelle Zeile mit der Ausgabe des Befehls
  • yyp!!sh - kopiere die Zeile, führe die untere Zeile als Shell-Befehl aus und ersetze sie mit der Ausgabe des Befehls

1) he, ihr Gentoo-isten, wenn Ihr sowieso nano als Default-Editor habt, wieso lasst Ihr dann nicht die Finger von den vim-Settings?
de/sysadmin/tools/vim.txt · Zuletzt geändert: 2014-03-24 17:41 von hella

Seiten-Werkzeuge