我用 vim 打开一个文件,缓冲区 id( bufnr()
) 是2
,然后我PreviewJupyterMD
在 Vim 命令行中运行一个函数call 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 中添加一个局部变量。然后当我关闭 Vim 时,我想要MDCleanUp
缓冲区 3 的 vim 运行函数。
如果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
实际行为MDCleanUp
运行了两次,但所有输出消息echom bufnr()
都是 2,输出 2 两次!
你能给我一些关于为什么输出的说明或建议:
2
2
以及如何让它成为:
2
3
提前致谢!