Python if_py和VIM:BufAdd,将东西插入新缓冲区

时间:2012-11-28 07:54:13

标签: python vim

当我打开缓冲区时(通过:tabnew或任何其他方式),如果有的话 没有与缓冲区关联的文件名,我想插入 一些默认文本(最近打开的文件)。

au BufAdd * call My_dir(expand("<afile>"))

function! My_dir(fname)
python << EOF
import vim
blah = vim.eval('a:fname')
if str(blah) == 'None':
    cb = vim.current.buffer
    cb.append("yuck")
EOF
endfunction

麻烦的是,fname将是'None',但current.buffer是 我以前的缓冲区!我如何获得缓冲区 打开所以我可以把东西粘在里面吗?

1 个答案:

答案 0 :(得分:0)

您遇到的问题是在创建窗口之前触发了BufAdd事件,显然是在Vim的当前缓冲区设置为新创建的缓冲区之前。

您需要做的只是使用BufWinEnter事件:

au BufWinEnter * call My_dir(expand("<afile>"))

我尝试了这个小改动的功能,但它确实有效。