1

当我打开一个缓冲区(通过 :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 将是“无”,但 current.buffer 是我之前所在的缓冲区!如何获取我刚刚打开的缓冲区以便我可以将东西放入其中?

4

1 回答 1

0

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

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

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

我用这个小改动尝试了你的功能,它奏效了。

于 2012-11-28T15:58:12.357 回答