Een naslaggids voor ingebouwde Vim-scriptfuncties en datastructuren.
Datastructuren
Dictionaries
let colors = {
\ "apple": "red",
\ "banana": "yellow"
}
echo colors["apple"]
echo get(colors, "apple") " onderdrukt foutmelding als sleutel ontbreekt
call remove(colors, "apple")
" Inspectie en controles
if has_key(dict, 'foo')
if empty(dict)
keys(dict)
len(dict)
max(dict)
min(dict)
count(dict, 'x')
string(dict)
map(dict, 'v:val . "!"')
extend(s:fruits, { "cherry": "red" })
for key in keys(mydict)
echo key . ': ' . mydict[key]
endfor
Lijsten (Lists)
let mylist = [1, "two", 3, "four"]
let first = mylist[0]
let last = mylist[-1]
" Veilig ophalen met fallback-waarde
let second = get(mylist, 1)
let fallback = get(mylist, 10, "NONE")
Buffer & Cursor
Bufferinspectie
line('.') " Huidig regelnummer
col('.') " Huidig kolomnummer
col('$') " Laatste kolom in huidige regel
getline('.') " Inhoud van huidige regel als string
getline(1) " Inhoud van regel 1 als string
getline(1, 5) " Regels 1 tot 5 als lijst van strings
search('^$') " Nummer van volgende lege regel
search('^$', 'n') " Volgende lege regel zoeken zonder cursor te verplaatsen
getcurpos() " [bufnum, lnum, col, off, curswant]
getpos('.') " [bufnum, lnum, col, off]
nextnonblank(1) " Volgende niet-lege regel na regel 1
prevnonblank(10)
Markeringen (Marks)
getpos("'a") " Positie van markering 'a'
setpos("'a", [0, 10, 5, 0])
getpos("'<") " Beginpositie van visuele selectie
getpos("'>") " Eindpositie van visuele selectie
Cursorpositionering
call cursor(line, col)
call cursor(line, col, off, curswant)
Bestandsnaamexpansie
expand('<cword>') " Woord onder cursor
expand('<cfile>') " Bestandspad onder cursor
expand('%') " Huidige bestandsnaam
" Modifiers:
" :p Volledig pad (/Users/name/project/file.txt)
" :h Hoofdmap (Head) (/Users/name/project)
" :t Bestandsnaam (Tail) (file.txt)
" :r Basisnaam zonder extensie (file)
" :e Extensie (txt)
" Voorbeeld: expand('%:p:h')
Bestanden & Paden
fnameescape('string')
fnamemodify('main.c', ':p:h')
fnamemodify(fname, ':e')
filereadable(fname)
getfsize('file.txt')
getcwd()
globpath(&rtp, "plugin/commentary.vim")
Wiskunde & Types
Wiskundige Bewerkingen
fmod(9, 2) " Modulo: 1.0
abs(-0.5) " Absolute waarde
sqrt(9) " Vierkantswortel
trunc(1.84) " 1.0
floor(1.84) " 1.0
ceil(1.84) " 2.0
float2nr(3.14) " Float omzetten naar integer: 3
Typeconversies
str2float('0.2')
str2nr('240')
str2nr('ff', 16) " Hexadecimale parsing (Base-16)
string(0.3) " Converteren naar string
Typecontrole
type(var) == type(0) " Getal
type(var) == type("") " String
type(var) == type(function("tr")) " Functiereferentie
type(var) == type([]) " Lijst
type(var) == type({}) " Dictionary
type(var) == type(0.0) " Drijvende-kommagetal
Tekenreeksen & Reguliere Expressies
Stringbewerkingen
if a =~ '\s*'
let clean = substitute(str, '\s\+', ' ', 'g')
strpart("abcdef", 3, 2) " == "de" (Substring: offset, lengte)
strpart("abcdef", 3) " == "def"
stridx("abcdef", "e") " == 4 (Substring)
strridx("abcdef", "d") " Omgekeerd zoeken naar index
matchstr('testing', 'test') " == 'test' (Overeenkomende tekst)
match('testing', 'test') " == 0 (Beginindex van match)
matchend('testing', 'test') " == 4 (Eindindex van match)
match('testing', '\ctest') " Hoofdletterongevoelig
split(str, '\zs') " String splitsen in array van tekens
strlen(str) " Lengte in bytes
strchars(str) " Aantal tekens (multibyte-ondersteuning)
strdisplaywidth(str) " Weergavekolommen op scherm
toupper(str)
tolower(str)
tr('foo', '_-', ' ') " Karaktervertaling
Vergelijkingen
if name ==# 'John' " Hoofdlettergevoelige gelijkheid
if name ==? 'John' " Hoofdletterongevoelige gelijkheid
if name == 'John' " Afhankelijk van 'ignorecase'-optie
if "hello" =~ '.*' " Komt overeen met patroon
if "hello" !~ '.*' " Komt niet overeen met patroon
Opdrachten & Uitvoering
Opdrachten Uitvoeren
normal! ddahello
execute 'normal! ' . a:keys
wincmd J " Vensterverplaatsingsopdracht
Shell-opdrachten
let output = system('ls ' . shellescape(expand('%:h')))
Registers
getreg('*') " Inhoud klembord ophalen
getregtype('*') " Registertype: 'v' (teken), 'V' (regel), '<ctrl-v>' (blok)
setreg('*', 'new text')