I use vim open a file, and the buffer id(bufnr()
) is 2
, then I run a function PreviewJupyterMD
in Vim commandline by call PreviewJupyterMD()
.
The function body is like:
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
So what I do is use edit
open a new file and load it to buffer 3(I checked it by bufnr()
, too). And add a local variable to buffer 3. Then I want vim run MDCleanUp
function for buffer 3 when I close Vim.
What MDCleanUp
do is check whether buffer has a variable if so delete file of that buffer from disk:
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
The actural behavior is MDCleanUp
run twice, but all output message by echom bufnr()
is 2, output 2 twice!
Would you give me some instruction or suggestion about why the output is:
2
2
and how to let it be:
2
3
Thanks in advance!