vim en vi cheatsheet voor gevorderden: alle commando’s en trucs
Je kent de basis van Vim — bestanden openen, typen, opslaan. Deze cheatsheet gaat verder: sneller navigeren, efficiënter bewerken, macro’s opnemen en productiviteitstips voor dagelijks gebruik op servers en tijdens examens.
⌨️ Modi — volledig overzicht
i Insert vóór cursor
I Insert aan begin van regel
a Insert na cursor
A Insert aan einde van regel
o Nieuwe regel onder + Insert
O Nieuwe regel boven + Insert
s Verwijder karakter + Insert
S Verwijder hele regel + Insert
R Replace mode (overschrijven)
v Visual mode (karakterselectie)
V Visual Line mode (regelselectie)
Ctrl+v Visual Block mode (kolomselectie)
: Command mode
Esc Terug naar Normal mode
🚀 Geavanceerde navigatie
# Basisbeweging
h j k l Links / omlaag / omhoog / rechts
0 Begin van regel (incl. spaties)
^ Eerste niet-spatie van regel
$ Einde van regel
gg Begin van bestand
G Einde van bestand
:42 Naar regel 42
50% Naar 50% van het bestand
# Woorden
w Begin van volgend woord
W Begin van volgend WOORD (spatie-gescheiden)
b Begin van vorig woord
e Einde van huidig woord
ge Einde van vorig woord
# Zinnen en alinea's
( Begin van vorige zin
) Begin van volgende zin
{ Begin van vorig paragraaf
} Begin van volgend paragraaf
# Scherm
H Eerste regel van scherm
M Middelste regel van scherm
L Laatste regel van scherm
Ctrl+f Pagina omlaag
Ctrl+b Pagina omhoog
Ctrl+d Halve pagina omlaag
Ctrl+u Halve pagina omhoog
zz Huidige regel centreren op scherm
# Naar karakter springen
f{char} Naar volgend voorkomen van karakter
F{char} Naar vorig voorkomen
t{char} Tot vóór volgend karakter
T{char} Tot vóór vorig karakter
; Herhaal laatste f/F/t/T
, Herhaal in tegengestelde richting
# Matching bracket
% Spring naar bijbehorend haakje ( ) [ ] { }
✂️ Bewerken — operators en bewegingen
Vim’s kracht zit in combinaties van operator + beweging. Eens je dit doorhebt gaat alles sneller.
# Patroon: [aantal] operator beweging
# d = delete, c = change, y = yank, > = indent
d$ Verwijder tot einde van regel
d0 Verwijder tot begin van regel
dw Verwijder woord
d3w Verwijder 3 woorden
diw Verwijder woord (ook als cursor midden in woord staat)
dip Verwijder paragraaf
di" Verwijder inhoud tussen aanhalingstekens
di( Verwijder inhoud tussen haakjes
di{ Verwijder inhoud tussen accolades
# Change (verwijderen + direct Insert mode)
cw Verander woord
c$ Verander tot einde van regel
ciw Verander woord (cursor anywhere in woord)
ci" Verander inhoud tussen aanhalingstekens
ci( Verander inhoud tussen haakjes
# Yank (kopiëren)
yy Kopieer hele regel
y$ Kopieer tot einde van regel
yiw Kopieer woord
y3j Kopieer huidige + 3 regels omlaag
# Indent
>> Inspringen (één niveau)
<< Uitspringen
= Auto-indent (selectie in Visual mode)
=G Auto-indent van cursor tot einde bestand
📋 Registers (meerdere clipboards)
# Vim heeft 26 named registers (a-z) + systeem clipboard
"ayy Kopieer regel naar register a
"ap Plak uit register a
"byiw Kopieer woord naar register b
# Systeem clipboard (werkt als xclip/xsel beschikbaar is)
"+yy Kopieer naar systeem clipboard
"+p Plak vanuit systeem clipboard
# Bekijk inhoud van registers
:registers
:reg a b Bekijk registers a en b
# Speciale registers
"0 Laatste yank (niet overschreven door delete)
"_ Blackhole register (verwijder zonder clipboard)
🔍 Zoeken en vervangen — geavanceerd
# Zoeken /patroon Zoeken vooruit ?patroon Zoeken achteruit n Volgende resultaat N Vorig resultaat * Zoek naar woord onder cursor (vooruit) # Zoek naar woord onder cursor (achteruit) # Vervangen (substitute) :%s/oud/nieuw/g Vervang alles in bestand :%s/oud/nieuw/gi Hoofdletterongevoelig :%s/oud/nieuw/gc Met bevestiging per geval :10,20s/oud/nieuw/g Alleen regels 10-20 :'<,'>s/oud/nieuw/g Alleen in Visual selectie # Reguliere expressies :%s/\bwoord\b/nieuw/g Heel woord (word boundary) :%s/^/# /g Voeg # toe aan begin elke regel :%s/ *$//g Verwijder spaties aan einde regels :%s/\t/ /g Vervang tabs door 2 spaties # Zoekopties :set ignorecase Hoofdletterongevoelig zoeken :set smartcase Hoofdlettergevoelig als zoekterm hoofdletter bevat :set hlsearch Zoekresultaten markeren :nohlsearch Markering verwijderen
📁 Meerdere bestanden en vensters
# Bestanden :e bestand.yaml Ander bestand openen :bn Volgend buffer :bp Vorig buffer :ls Alle open buffers tonen :b2 Naar buffer 2 # Gesplitste vensters :split bestand.yaml Horizontaal splitsen :vsplit bestand.yaml Verticaal splitsen Ctrl+w h/j/k/l Navigeren tussen vensters Ctrl+w w Volgend venster Ctrl+w = Gelijke grootte Ctrl+w _ Huidig venster maximaliseren :close Huidig venster sluiten :only Alle andere vensters sluiten # Tabs :tabnew bestand.yaml Nieuw tab :tabn Volgend tab :tabp Vorig tab gt Volgend tab (Normal mode) gT Vorig tab
⏺ Macro’s opnemen
Macro’s zijn opgenomen reeksen van toetsaanslagen die je kunt herhalen. Ideaal voor repetitieve bewerkingen.
# Macro opnemen
qa Start opname in register a
(voer nu je bewerkingen uit)
q Stop opname
# Macro afspelen
@a Voer macro a uit
@@ Herhaal laatste macro
10@a Macro a 10 keer uitvoeren
# Voorbeeld: voeg commentaar toe aan 50 regels
# 1. Ga naar eerste regel
# 2. qa (start opname)
# 3. I# Esc (voeg # in aan begin)
# 4. j (naar volgende regel)
# 5. q (stop opname)
# 6. 49@a (herhaal 49 keer)
🔢 Nummers en tellen
Ctrl+a Verhoog getal onder cursor met 1 Ctrl+x Verlaag getal onder cursor met 1 10Ctrl+a Verhoog getal met 10 g Ctrl+a Verhoog reeks getallen in selectie (oplopend)
📌 Markeringen (bookmarks)
ma Stel markering a in op huidige positie `a Spring naar exacte positie van markering a 'a Spring naar begin van regel met markering a '' Spring terug naar vorige positie `. Spring naar laatste wijziging :marks Toon alle markeringen
⚙️ Configuratie (.vimrc)
Zet dit in ~/.vimrc voor een prettige werkomgeving bij Red Hat examens:
" Basisinstellingen set number " Regelnummers set relativenumber " Relatieve nummers (handig voor bewegingen) set expandtab " Tabs naar spaties set tabstop=2 " Tab = 2 spaties set shiftwidth=2 " Inspringing = 2 spaties set autoindent " Automatisch inspringen set smartindent " Slim inspringen " Zoeken set ignorecase " Hoofdletterongevoelig set smartcase " Tenzij hoofdletter in zoekterm set hlsearch " Markeer zoekresultaten set incsearch " Live zoeken tijdens typen " Weergave set syntax=on " Syntaxkleuring set showcmd " Huidig commando tonen set showmatch " Bijbehorend haakje markeren set ruler " Cursorpositie tonen set scrolloff=5 " Altijd 5 regels zichtbaar boven/onder cursor " Handige snelkoppelingen nnoremap n :set number! " Toggle regelnummers nnoremap / " Spatie = zoeken
🛠 Handige commando’s voor servers
:r !commando Voeg output van shell-commando in :r bestand Voeg inhoud van bestand in :! commando Voer shell-commando uit (zonder vim te verlaten) :shell Open tijdelijke shell (exit om terug te keren) # Sorteren :sort Sorteer regels alfabetisch :sort! Sorteer omgekeerd :sort n Sorteer numeriek # Verwijder lege regels :g/^$/d # Verwijder regels die patroon bevatten :g/patroon/d # Behoud alleen regels die patroon bevatten :v/patroon/d # Regelopmaak :set textwidth=80 Automatisch afbreken na 80 tekens gq} Herformateer paragraaf
⚡ Snelste manieren voor veelvoorkomende taken
# Hele bestand kopiëren
ggVGy (gg = begin, V = visual line, G = einde, y = yank)
# Alle regels nummeren
:%s/^/\=line('.').' '/
# Dupliceer huidige regel
yyp
# Wissel twee regels om
ddp
# Maak een woord hoofdletter
gUiw (g = operator, U = uppercase, iw = inner word)
guiw (lowercase)
g~iw (toggle case)
# Voeg iets toe aan einde van elke regel (Visual Block)
Ctrl+v → G → $ → A → typ → Esc
# Verwijder eerste karakter van elke regel
:%s/^.//
⚡ Examentips (Red Hat)
- Maak een
~/.vimrcaan het begin van het examen met de YAML-instellingen — dit scheelt veel fouten uenCtrl+rzijn je beste vrienden — geen paniek bij fouten:%s/\t/ /gredt je als je per ongeluk echte tabs in YAML hebt getypt:set pasteinschakelen vóór plakken vanuit clipboard — voorkomt auto-indent problemen:set nopastedaarna weer uitschakelen- Gebruik
%om te verifiëren dat accolades en haakjes in YAML/JSON gesloten zijn