Vim 8.0 で追加された機能 closure

Vim 8.0 では関数に closure 機能が追加されました。 これは、関数外のローカル変数をキャプチャするための機能です。

function! s:init()
    let value = 0

   " closure キーワードを追加することで関数外のローカル変数をキャプチャできる
    function! s:count() closure
        let value += 1
        return value
    endfunction
endfunction

" 関数を定義する
call s:init()

echo s:count()
" => 1
echo s:count()
" => 2
echo s:count()
" => 3