vim - 如何在输入 :q command to exit a window, tab 或 vim 后自动关闭 vim 预览窗口?

标签 vim

我进行了搜索,并得到了壁橱答案表 How can I automatically close preview window after I move cursor to another window in Vim? 。但是我发现它不能正确与标签列表插件一起使用。

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

autocmd WinLeave * pc

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

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

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

最佳答案

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

编辑

根据您的描述,为了使这项工作正常进行,您需要检查上一个窗口是否是预览窗口。该片段将告诉您:

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

这意味着“获取上一个窗口的选项值 pvw(恰好是窗口本地的)”,其中 winnr("#") 给出前一个窗口的窗口号。

关于vim - 如何在输入 :q command to exit a window, tab 或 vim 后自动关闭 vim 预览窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10101556/

相关文章:

linux - git:编辑文件导致使用 git diff 时出现 ^M

vim - Vim 脚本中函数参数的默认值

python - VIM:在 python 模式下使用 python3 解释器

regex - 我如何让 vim 突出显示多余的空白和所有选项卡?

vim - Vim 中无法匹配一个或多个空格

regex - 试图删除文档的第一列。

vim - 如何在NERDTree中按扩展名过滤掉文件?

regex - Vim 匹配一个矩形区域

vim - :make in vim? 上的自动保存缓冲区

python - 通用 :python command in vim?