質問: bufhiddenにunloadまたはdeleteを指定したバッファで`:bunload`,`:bdelete`,`:bwipeout`のいずれかのコマンドを実行するとBufUnloadイベントが2回実行されました。 日本語のヘルプの:h BufUnloadの項目に`他のバッファに切り替えないこと。もしすると問題が発生するだろう。`という記述があったので、2回実行された事と関係があるのでしょうか? 何故2回実行されたのでしょうか? ``` " 再現するコード new setlocal bufhidden=unload "setlocal bufhidden=delete augroup mygroup autocmd! autocmd BufUnload echo 1 augroup END bunload "bdelete "bwipeout ``` **事後報告** 本内容をvim-jpに報告しました。 パッチ作成からvim_devへの報告まで対応してくださいました。
回答: 以下は推測での回答になります。ご了承ください。 恐らくですが、 `:bunload` ↓ `BufUnload` が発生 ↓ バッファがアンロードされたことにより、`bufhidden` の条件を満たす ↓ `bufhidden=unload` により、バッファの `unload` 処理が走る ↓ `BufUnload` が発生 という感じではないかと思います。 詳しいところは Vim のソースコードを調べてみないとわかりませんが、もしかしたらこの挙動はバグの可能性があります。