Vim 8.0 で追加された機能 function() 関数

Vim 8.0 では function() 関数の引数が新たに追加されました。

[引数の束縛]

function() の第二引数に第一引数に渡す関数の引数を渡すことで、引数の束縛を行うことができるようになりました。

function! Plus(a, b)
    return a:a + a:b
endfunction

" 第一引数を束縛
let s:Plus3 = function("Plus", [3])

echo s:Plus3(2)
" => 5
echo s:Plus3(-5)
" => -2

[関数が参照する辞書を指定]

第三引数に辞書を渡すことで、関数が参照する辞書を指定することが出来ます。

function! Disp() dict
    return self.name . " : " . self.age
endfunction

let s:data = { "name" : "homu", "age" : 14 }
let s:Disp = function("Disp", [], s:data)
echo s:Disp()

関数の束縛がかなり便利。