簡體   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