vim/vi cheatsheet: van beginner tot gevorderde commando’s en trucs
Vim en Vi uitgelegd van modi en de basis tot geavanceerde navigatie, macro’s, registers en .vimrc-configuratie — alles op één pagina voor Red Hat- en Kubernetes-examens.
Vi en Vim zijn de standaard teksteditors op Linux-servers — en daarmee op elk Red Hat- en Kubernetes-examen. Je hebt geen GUI, geen nano, geen VSCode. Je moet vi kunnen gebruiken. Dit artikel begint bij de basis en bouwt door naar alle commando's en trucs die je nodig hebt voor productief, snel werken.
Het belangrijkste concept: modi
Vim werkt met modi — en dat is het enige wat je écht moet begrijpen. In andere editors typ je gewoon tekst. In Vim moet je eerst de juiste modus activeren.
Er zijn drie modi die je meteen nodig hebt:
- Normal mode — de startmodus. Je navigeert en geeft opdrachten. Je kunt NIET typen.
- Insert mode — je typt tekst. Precies zoals je gewend bent.
- Command mode — je voert commando's uit zoals opslaan en afsluiten.
Vuistregel: als je niet weet in welke modus je zit, druk dan op Esc. Je bent dan altijd in Normal mode.
De vijf dingen die je meteen moet kunnen
1. Een bestand openen
vi bestand.yaml
vim bestand.yaml
2. Beginnen met typen
Druk op i — je ziet onderaan -- INSERT -- verschijnen. Nu kun je typen.
3. Stoppen met typen
Druk op Esc — je bent terug in Normal mode.
4. Opslaan
Typ : w Enter — dat is het dubbele punt, dan w, dan Enter.
5. Afsluiten
Typ : q Enter — of : q ! Enter als je zonder opslaan wilt afsluiten.
Opslaan én afsluiten tegelijk: :wq Enter
⌨️ 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
Opslaan en afsluiten — alle varianten
:w Opslaan
:q Afsluiten (werkt alleen als er geen wijzigingen zijn)
:wq Opslaan en afsluiten
:q! Afsluiten zonder opslaan (wijzigingen weggooien)
:wq! Geforceerd opslaan en afsluiten
🚀 Navigeren — van basis tot geavanceerd
# 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.
# Simpel beginnen
dd Verwijder huidige regel
2dd Verwijder 2 regels
yy Kopieer huidige regel (yank)
p Plak onder cursor
P Plak boven cursor
u Ongedaan maken (undo)
Ctrl+r Opnieuw (redo)
x Verwijder karakter onder cursor
dw Verwijder woord
# Patroon: [aantal] operator beweging
# d = delete, c = change, y = yank, > = indent
d$ Verwijder tot einde van regel
d0 Verwijder tot begin van regel
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)
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
# 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 op huidige regel
:%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/bwoordb/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
Visuele selectie
V Selecteer hele regels (Visual Line mode)
j/k Selectie uitbreiden omlaag/omhoog
y Geselecteerde regels kopiëren
d Geselecteerde regels verwijderen
p Plakken
📁 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
Tip voor YAML en Ansible: stel altijdset expandtabenset tabstop=2in vóórdat je een playbook of YAML-bestand bewerkt. YAML accepteert geen echte tabs — alleen spaties. Dit is de meest voorkomende oorzaak van YAML-fouten.
🛠 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/^.//
De meest voorkomende paniekmomenten — en de oplossing
Probleem: je hebt per ongeluk iets getypt, je weet niet meer in welke modus je zit, alles ziet er raar uit.
Oplossing: druk meerdere keren op Esc totdat je zeker weet dat je in Normal mode bent. Typ dan u om wijzigingen ongedaan te maken, of :q! om zonder opslaan te sluiten.
Probleem: je wilt afsluiten maar krijgt een foutmelding.
Oplossing: gebruik :q! (met uitroepteken) om geforceerd af te sluiten zonder opslaan.
Oefenen in 10 minuten
- Open een terminal en typ
vim oefening.txt - Druk op
ien typ een paar regels tekst - Druk op
Esc - Navigeer met de pijltjestoetsen of
h j k l - Typ
ddom een regel te verwijderen - Typ
uom dat ongedaan te maken - Typ
:wqom op te slaan en af te sluiten
Na 10 minuten oefenen beheers je 90% van wat je op het examen nodig hebt. De rest van dit artikel — registers, macro's, meerdere vensters — is voor wanneer je sneller en efficiënter wilt worden, niet voor je eerste examen.
⚡ Examentips (Red Hat)
- Maak een
~/.vimrcaan het begin van het examen met de bovenstaande 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