我键入后如何自动关闭vim预览窗口:q命令退出窗口,选项卡或vim?

时间:2012-04-11 07:19:49

标签: vim

我进行了搜索,得到了How can I automatically close preview window after I move cursor to another window in Vim?的cloeset答案。但是我发现它无法正常使用taglist插件。

以下是从以上链接中获取的代码:

autocmd WinLeave * pc

autocmd WinLeave * call ClosePreviewWindow()
function ClosePreviewWindow()
    if &pvw
        pclose
    endif
endfunction

我正在使用一个名为autopreview的vim插件。通常它会调用ptag命令打开预览窗口并跳回缓冲区窗口。这是问题,当它从缓冲区窗口跳转到预览窗口并返回时,它将触发WinLeave事件两次,然后预览窗口将在打开后立即关闭。所以它永远不会出现。我试图用TabLeave / BufLeave替换WinLeave,发生了其他问题。所以我来这里寻求帮助。

更新:
也许我应该使用tabclose / qa命令?

1 个答案:

答案 0 :(得分:1)

您是否尝试过使用WinEnter事件而不是WinLeave?在处理程序中,您将检查是否进入预览窗口,如果没有,则检查预览窗口是否打开并在必要时关闭(如上面的代码)。

修改

根据您的说明,为了完成这项工作,您需要检查上一个窗口是否为预览窗口。这个片段会告诉你:

if getwinvar(winnr("#"), "&pvw") == 1
    " do stuff, e.g. pclose
endif

这就是说,“为前一个窗口”获取选项值pvw(恰好是窗口本地)“,其中winnr("#")给出前一个窗口的窗口编号。< / p>