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

(M)Eine .vimrc

" .vimrc for vim and gvim

" disable beep and flash
" -> https://vim.fandom.com/wiki/Disable_beeping
set noerrorbells visualbell t_vb=
autocmd GUIEnter * set visualbell t_vb=

" default tab settings
set smartindent     " Do smart autoindenting when starting a new line
set shiftwidth=4    " Set number of spaces per auto indentation
set expandtab       " When using <Tab>, put spaces instead of a <tab> character
set tabstop=4       " Number of spaces that a <Tab> in the file counts for
set smarttab        " At <Tab> at beginning line inserts spaces set in shiftwidth

" default - indicate some invisible characters
" more see there: https://vimhelp.org/options.txt.html#%27listchars%27
set listchars=tab:\ \ \ ,trail:ø,nbsp:_
set list
" and hightlight special symbols, tabs, ...
" cterm(bg|fg) -> konsole vim, gui(bg|fg) -> gvim
highlight SpecialKey ctermfg=1 ctermbg=Yellow ctermfg=Red guibg=Yellow guifg=Red

" ---- python - spaces, not tabs (and highlight tabs strongly)
autocmd Filetype python setlocal expandtab listchars=tab:T>,trail:ø
autocmd Filetype python highlight SpecialKey ctermfg=1 ctermbg=Blue guibg=LightBlue
" make calls pylint
autocmd Filetype python setlocal makeprg=pylint\ --reports=n\ --msg-template=\"{path}:{line}:\ {msg_id}\ {symbol},\ {obj}\ {msg}\"\ %:p

" ---- go - real tabs (but highlight them mildly)
autocmd Filetype go setlocal noexpandtab nosmarttab
autocmd Filetype go setlocal listchars=tab:\ \ \ ,trail:·,nbsp:_
autocmd Filetype go highlight SpecialKey ctermfg=1 ctermbg=LightYellow ctermfg=Red guibg=Yellow guifg=Red

" ---- make - real tabs
autocmd Filetype make setlocal noexpandtab nosmarttab
autocmd Filetype make setlocal listchars=tab:\ \ \ ,trail:·,nbsp:_
autocmd Filetype make highlight SpecialKey ctermfg=1 ctermbg=LightYellow ctermfg=Red guibg=Yellow guifg=Red

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: 2019-11-06 14:49 von hella

Seiten-Werkzeuge

Mastodon Twitter