読者です 読者をやめる 読者になる 読者になる

Vim の funcref() した関数を削除した時の挙動

Vim

ふと、気になったので試してみました。

[funcref() した後に :delfunction する]

function! Test()
    return "test"
endfunction

let F = funcref("Test")

delfunction Test

echo F()
" E933: 関数は削除されました: Test
" E15: 無効な式です: F()

まあ、これは予想通りですね

[関数を上書きしてから削除する]

次は、削除する前に関数を上書きして試してみた。

function! Test()
    return "test"
endfunction

let F = funcref("Test")

function! Test()
    return "over test"
endfunction
delfunction Test

echo F()
" => test

この場合は、funcref() した関数は消されるに残ってるみたいです。