繁体   English   中英

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

[英]How to automatically close vim preview window after I type :q command to exit a window, tab or vim?

我做了搜索,得到了一个壁橱答案表我将 cursor 移动到 Vim 中的另一个 window 后,如何自动关闭预览 window? . 但是我发现它不能正确地与 taglist 插件一起使用。

这是从上面的链接中获取的代码:

autocmd WinLeave * pc

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

我正在使用一个名为 autopreview 的 vim 插件。 一般会调用ptag命令打开预览window,然后跳回缓冲区window。问题来了,当它从缓冲区window跳转到预览window再返回时,会触发两次WinLeave事件,然后立即关闭预览window打开后。 所以一直没有出现。 我尝试用 TabLeave/BufLeave 替换 WinLeave,出现了其他问题。 所以我来这里寻求帮助。

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

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

编辑

根据您的描述,为了完成这项工作,您需要检查之前的 window 是否是预览版 window。此代码段将告诉您:

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

它的意思是,“给我前一个窗口的选项值pvw (碰巧是窗口本地的)”,其中winnr("#")给出前一个 window 的 window 编号。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM