0

私はvimを使用してファイルを開き、バッファid(bufnr())は.2PreviewJupyterMDcall PreviewJupyterMD()

関数本体は次のようになります。

function! PreviewJupyterMD()
    " creat a md file and load file name to a variable l:md_file
    ...
    ...
    exec "edit" . l:md_file
    let b:created_for_jupyter = 1
    autocmd BufUnload <buffer> call MDCleanUp()
endfunction

だから私がやっていることはedit、新しいファイルを開いてバッファ3にロードすることです(私もそれをチェックしましたbufnr())。ローカル変数をバッファ 3 に追加します。次に、MDCleanUpVim を閉じたときにバッファ 3 の vim run 関数が必要です。

バッファに変数があるかどうMDCleanUpかを確認するのは、そのバッファのファイルをディスクから削除する場合です。

function! MDCleanUp()
    if exists("b:created_for_jupyter")
        call delete(expand("<afile>:p"))
    endif
    " below 2 line use to know this function run on which buffer
    echom bufnr()
    sleep 4
endfunction

実際の動作はMDCleanUp2 回実行されますが、出力メッセージechom bufnr()はすべて 2 で、出力 2 は 2 回です!

出力が次のようになる理由について、指示または提案をお願いします。

2
2

そしてそれをどのようにするか:

2
3

前もって感謝します!

4

0 に答える 0