Ook interessant Op zoek naar AI-certificering? Bezoek ons zusje-platform Route-to-AI.com
⏱ 12 min. lezen vim/vi Cheatsheet: nederlands

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 altijd set expandtab en set tabstop=2 in 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

  1. Open een terminal en typ vim oefening.txt
  2. Druk op i en typ een paar regels tekst
  3. Druk op Esc
  4. Navigeer met de pijltjestoetsen of h j k l
  5. Typ dd om een regel te verwijderen
  6. Typ u om dat ongedaan te maken
  7. Typ :wq om 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 ~/.vimrc aan het begin van het examen met de bovenstaande YAML-instellingen — dit scheelt veel fouten
  • u en Ctrl+r zijn je beste vrienden — geen paniek bij fouten
  • :%s/t/ /g redt je als je per ongeluk echte tabs in YAML hebt getypt
  • :set paste inschakelen vóór plakken vanuit clipboard — voorkomt auto-indent problemen
  • :set nopaste daarna weer uitschakelen
  • Gebruik % om te verifiëren dat accolades en haakjes in YAML/JSON gesloten zijn