Algemeen

  • :h[elp] keyword - open hulp voor keyword
  • :sav[eas] file - sla bestand op als
  • :clo[se] - sluit huidige scherm
  • :ter[minal] - open a terminal window
  • K - open handleiding voor woord onder cursor
Tip Run vimtutor in a terminal to learn the first Vim commands.

Cursorbewegingen

  • h - verplaats cursor naar links
  • j - verplaats cursor naar rechts
  • k - verplaats cursor naar boven
  • l - verplaats cursor naar beneden
  • gj - move cursor down (multi-line text)
  • gk - move cursor up (multi-line text)
  • H - verplaats cursor naar de bovenkant van het scherm
  • M - verplaats cursor naar het midden van het scherm
  • L - verplaats cursor naar de onderkant van het scherm
  • w - verplaats cursor naar het begin van een woord
  • W - verplaats cursor naar het begin van een woord (woorden mogen interpunctie bevatten)
  • e - verplaats cursor naar het einde van een woord
  • E - verplaats cursor naar het einde van een woord (woorden mogen interpunctie bevatten)
  • b - verplaats cursor naar het begin van een woord
  • B - verplaats cursor naar het begin van een woord (woorden mogen interpunctie bevatten)
  • ge - jump backwards to the end of a word
  • gE - jump backwards to the end of a word (words can contain punctuation)
  • % - move to matching character (default supported pairs: '()', '{}', '[]' - use :h matchpairs in vim for more info)
  • 0 - verplaats cursor naar het begin van de regel
  • ^ - verplaats cursor naar het eerste teken van de regel
  • $ - verplaats cursor naar het einde van de regel
  • g_ - verplaats cursor naar het laatste teken van de regel
  • gg - verplaats cursor naar de eerste regel van het document
  • G - verplaats cursor naar de laatste regel van het document
  • 5gg or 5G - ga naar regel 5
  • gd - move to local declaration
  • gD - move to global declaration
  • fx - ga naar het volgende voorkomen van karakter x
  • tx - ga naar voor het volgende voorkomen van karakter x
  • Fx - ga naar het vorige voorkomen van karakter x
  • Tx - ga naar na het vorige voorkomen van karakter x
  • ; - herhaal vorige f, t, F of T commando
  • , - herhaal vorige f, t, F of T commando, terugwaards
  • } - ga naar de volgende paragraaf (of functie/blok, tijdens het bewerken van code)
  • { - ga naar de vorige paragraaf (of functie/blok, tijdens het bewerken van code)
  • zz - center cursor on screen
  • zt - position cursor on top of the screen
  • zb - position cursor on bottom of the screen
  • Ctrl + e - beweeg scherm een regel omlaag
  • Ctrl + y - beweeg scherm een regel omhoog
  • Ctrl + b - ga een volledig scherm terug
  • Ctrl + f - ga een volledig scherm vooruit
  • Ctrl + d - ga 1/2 scherm vooruit
  • Ctrl + u - ga 1/2 scherm terug
Tip Prefix een cursorbeweging met een getal om deze te herhalen. bijvoorbeeld, 4j beweegt de cursor 4 regels omlaag.

Insert modus: in- en toevoegen van tekst

  • i - invoegen voor de cursor
  • I - invoegen aan het begin van de regel
  • a - invoegen achter de cursor
  • A - invoegen aan het einde van de regel
  • o - voeg een nieuwe regel toe onder de cursor
  • O - voeg een nieuwe regel toe boven de cursor
  • ea - invoegen aan het einde van het woord
  • Ctrl + h - delete the character before the cursor during insert mode
  • Ctrl + w - delete word before the cursor during insert mode
  • Ctrl + j - begin new line during insert mode
  • Ctrl + t - indent (move right) line one shiftwidth during insert mode
  • Ctrl + d - de-indent (move left) line one shiftwidth during insert mode
  • Ctrl + n - insert (auto-complete) next match before the cursor during insert mode
  • Ctrl + p - insert (auto-complete) previous match before the cursor during insert mode
  • Ctrl + rx - insert the contents of register x
  • Ctrl + ox - Temporarily enter normal mode to issue one normal-mode command x.
  • Esc or Ctrl + c - verlaat insert modus

Bewerken

  • r - vervang één karakter
  • R - replace more than one character, until ESC is pressed.
  • J - voeg onderstaande regel samen met huidige regel met een spatie ertussen
  • gJ - voeg onderstaande regel samen met huidige regel zonder een spatie ertussen
  • gwip - formatteer paragraaf
  • g~ - switch case up to motion
  • gu - change to lowercase up to motion
  • gU - change to uppercase up to motion
  • cc - vervang huidige regel
  • c$ or C - vervang tot einde regel
  • ciw - vervang woord
  • cw or ce - vervang tot einde huidig woord
  • s - vervang karakter
  • S - vervang huidige regel (het zelfde als cc)
  • xp - verwissel twee letters (verwijder en plak)
  • u - ongedaan maken
  • U - restore (undo) last changed line
  • Ctrl + r - overdoen
  • . - laatste commando herhalen

Tekst markeren (Visuele modus)

  • v - start visuele modus, selecteer tekst en voer daarna een commando uit (zoals y-kopieer)
  • V - start visuele modus (per regel)
  • o - ga naar het einde van het geselecteerde gebied
  • Ctrl + v - begin visuele modus (per blok)
  • O - ga naar andere hoek van het geselecteerde blok
  • aw - selecteer een woord
  • ab - een blok met ()
  • aB - een blok met {}
  • at - a block with <> tags
  • ib - binnenkant blok met ()
  • iB - binnenkant blok met {}
  • it - inner block with <> tags
  • Esc or Ctrl + c - verlaat visuele modus
Tip Instead of b or B one can also use ( or { respectively.

Visuele commando's

  • > - verplaats tekst naar rechts
  • < - verplaats tekst naar links
  • y - kopieer gemarkeerde tekst
  • d - verwijder gemarkeerde tekst
  • ~ - hoofdletters omwisselen
  • u - change marked text to lowercase
  • U - change marked text to uppercase

Registers

  • :reg[isters] - laat registerinhoud zien
  • "xy - kopieer naar register x
  • "xp - plak inhoud van register x
  • "+y - yank into the system clipboard register
  • "+p - paste from the system clipboard register
Tip Registers worden opgeslagen in ~/.viminfo en worden opnieuw geladen na het herstarten van vim.
Tip Special registers:

0 - last yank
" - unnamed register, last delete or yank
% - current file name
# - alternate file name
* - clipboard contents (X11 primary)
+ - clipboard contents (X11 clipboard)
/ - last search pattern
: - last command-line
. - last inserted text
- - last small (less than a line) delete
= - expression register
_ - black hole register

Positiemarkeringen

  • :marks - lijst van positiemarkeringen
  • ma - Markeer huidige positie als marker A
  • `a - ga naar positie van marker A
  • y`a - kopieer tekst naar positie van marker A
  • `0 - go to the position where Vim was previously exited
  • `" - go to the position when last editing this file
  • `. - go to the position of the last change in this file
  • `` - go to the position before the last jump
  • :ju[mps] - list of jumps
  • Ctrl + i - go to newer position in jump list
  • Ctrl + o - go to older position in jump list
  • :changes - list of changes
  • g, - go to newer position in change list
  • g; - go to older position in change list
  • Ctrl + ] - jump to the tag under cursor
Tip To jump to a mark you can either use a backtick (`) or an apostrophe ('). Using an apostrophe jumps to the beginning (first non-blank) of the line holding the mark.

Macros

  • qa - Neem macro A op
  • q - stop met opnemen
  • @a - herhaal macro A
  • @@ - herhaal laatst uitgevoerde macro

Kopiëren en plakken

  • yy - kopieer één regel
  • 2yy - kopieer twee regels
  • yw - kopieer de karakters vanaf de cursorpositie tot het begin van het volgende woord
  • yiw - kopieer woord onder de cursor
  • yaw - kopieer het woord onder de cursor, inclusief de spatie er voor of er achter
  • y$ or Y - kopieer tot het einde van de regel
  • p - plak achter de cursor
  • P - plak voor de cursor
  • gp - put (paste) the clipboard after cursor and leave cursor after the new text
  • gP - put (paste) before cursor and leave cursor after the new text
  • dd - verwijder (knip) een regel
  • 2dd - verwijder (knip) twee regels
  • dw - verwijder (knip) de karakters vanaf de cursorpositie tot het begin van het volgende woord
  • diw - verwijder (knip) woord onder de cursor
  • daw - verwijder (knip) het woord onder de cursor, inclusief de spatie er voor of er achter
  • :3,5d - delete lines starting from 3 to 5
Tip You can also use the following characters to specify the range:
e.g.

:.,$d - From the current line to the end of the file
:.,1d - From the current line to the beginning of the file
:10,1d - From the 10th line to the beginning of the file

  • :g/{pattern}/d - delete all lines containing pattern
  • :g!/{pattern}/d - delete all lines not containing pattern
  • d$ or D - verwijder (knip) tot het einde van de regel
  • x - verwijder (knip) huidige karakter

Indent text

  • >> - indent (move right) line one shiftwidth
  • << - de-indent (move left) line one shiftwidth
  • >% - indent a block with () or {} (cursor on brace)
  • <% - de-indent a block with () or {} (cursor on brace)
  • >ib - indent inner block with ()
  • >at - indent a block with <> tags
  • 3== - re-indent 3 lines
  • =% - re-indent a block with () or {} (cursor on brace)
  • =iB - re-indent inner block with {}
  • gg=G - re-indent entire buffer
  • ]p - paste and adjust indent to current line

Verlaten

  • :w - sla op maar blijf in vim
  • :w !sudo tee % - sla op, gebruikmakend van sudo
  • :wq or :x or ZZ - sla op en verlaat vim
  • :q - verlaat vim (faalt wanneer er niet-opgeslagen aanpassingen zijn)
  • :q! or ZQ - verlaat vim en gooi niet-opgeslagen aanpassingen weg
  • :wqa - sla op en sluit alle tabs

Zoeken en vervangen

  • /pattern - zoek naar patroon
  • ?pattern - zoek achteruit naar patroon
  • \vpattern - 'super magisch' patroon: non-alfanumerieke karakters worden geïnterpreteerd als speciale tekens, escapen niet nodig
  • n - herhaal zoekopdracht in dezelfe richting
  • N - herhaal zoekopdracht in tegengestelde richting
  • :%s/old/new/g - vervang alle 'old' met 'new' in het bestand
  • :%s/old/new/gc - vervang alle 'old' met 'new' in het bestand, vraag steeds om bevestiging
  • :noh[lsearch] - verwijder markering van gevonden stukken tekst

Zoek in meerdere bestanden

  • :vim[grep] /pattern/ {`{file}`} - zoek voor patroon in meerdere bestanden
e.g. :vim[grep] /foo/ **/*
  • :cn[ext] - ga naar het volgende zoekresultaat
  • :cp[revious] - ga naar het vorige zoekresultaat
  • :cope[n] - open een scherm met de lijst van alle zoekresultaten
  • :ccl[ose] - close the quickfix window

Tabbladen

  • :tabnew or :tabnew {page.words.file} - open een bestand in een nieuw tabblad
  • Ctrl + wT - verplaats het huidige opgesplitste scherm naar een nieuw tabblad
  • gt or :tabn[ext] - ga naar het volgende tabblad
  • gT or :tabp[revious] - ga naar het vorige tabblad
  • #gt - ga naar tabblad nummer #
  • :tabm[ove] # - verplaats huidige tabblad naar positie # (geïndexeerd vanaf 0)
  • :tabc[lose] - sluit huidige tabblad en alle bijbehorende schermen
  • :tabo[nly] - sluit alle tabbladen behalve het huidige tabblad
  • :tabdo command - voer het command uit op alle tabs (bijvoorbeeld :tabdo q - sluit alle geopende tabbladen)

Werken met meerdere bestanden

  • :e[dit] file - bewerk een bestand in een nieuwe buffer
  • :bn[ext] - ga naar de volgende buffer
  • :bp[revious] - ga naar de vorige buffer
  • :bd[elete] - verwijder buffer (sluit een bestand)
  • :b[uffer]# - go to a buffer by #
  • :b[uffer] file - go to a buffer by file
  • :ls or :buffers - lijst van alle open buffers
  • :sp[lit] file - open een bestand in een nieuwe buffer en splits scherm
  • :vs[plit] file - open een bestand in een nieuwe buffer en splits scherm verticaal
  • :vert[ical] ba[ll] - edit all buffers as vertical windows
  • :tab ba[ll] - edit all buffers as tabs
  • Ctrl + ws - splits scherm
  • Ctrl + wv - splits scherm verticaal
  • Ctrl + ww - wissel van scherm
  • Ctrl + wq - sluit een scherm
  • Ctrl + wx - exchange current window with next one
  • Ctrl + w= - make all windows equal height & width
  • Ctrl + wh - verplaats cursor naar linkse scherm (verticale splitsing)
  • Ctrl + wl - verplaats cursor naar rechtse scherm (verticale splitsing)
  • Ctrl + wj - verplaats cursor naar scherm beneden (horizontale splitsing)
  • Ctrl + wk - verplaats cursor naar scherm boven (horizontale splitsing)
  • Ctrl + wH - make current window full height at far left (leftmost vertical window)
  • Ctrl + wL - make current window full height at far right (rightmost vertical window)
  • Ctrl + wJ - make current window full width at the very bottom (bottommost horizontal window)
  • Ctrl + wK - make current window full width at the very top (topmost horizontal window)

Diff

  • zf - manually define a fold up to motion
  • zd - delete fold under the cursor
  • za - toggle fold under the cursor
  • zo - open fold under the cursor
  • zc - close fold under the cursor
  • zr - reduce (open) all folds by one level
  • zm - fold more (close) all folds by one level
  • zi - toggle folding functionality
  • ]c - jump to start of next change
  • [c - jump to start of previous change
  • do or :diffg[et] - obtain (get) difference (from other buffer)
  • dp or :diffpu[t] - put difference (to other buffer)
  • :diffthis - make current window part of diff
  • :dif[fupdate] - update differences
  • :diffo[ff] - switch off diff mode for current window
Tip The commands for folding (e.g. za) operate on one level. To operate on all levels, use uppercase letters (e.g. zA).
Tip To view the differences of files, one can directly start Vim in diff mode by running vimdiff in a terminal. One can even set this as git difftool.