![](/img/trans.png)
[英]How do you automatically remove the preview window after autocompletion in 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.