由於某些原因,quickfix文件類型插件的包含警告在其內容更改時不起作用。Quickfix ftplugin包容衛士
插入上~/.vim/ftplugin/qf.vim
if exists("b:did_ftplugin")
finish
endif
call input("qf.vim!")
下列內容從input()
該消息可以發出:copen
之後似乎。
但是,儘管包括防護件從默認文件類型插件設置$VIMRUMTIME
,如圖:echo b:did_ftplugin
和:1verbose setlocal stl
,發證:copen
,:cold
,:cnew
或:helpg helpg
還導致要顯示的消息。
發生這種情況時不需要額外的插件,也不需要設置除filetype plugin indent on
和set nocompatible
以外的其他設置。
我的第一個猜測是,任何命令刷新quickfix窗口關閉現有的緩衝區並打開一個新的。但在上面的endif
之後包括let b:did_ftplugin = 1
可避免文件類型插件重新加載,因爲在第一個:copen
之後沒有顯示任何消息(但由於'stl'
未設置,因此默認文件類型插件完全被跳過)。
在默認文件類型插件上設置的b:did_ftplugin
和從我的主目錄中設置的b:did_ftplugin
之間有什麼區別?
這是出於好奇,還是受到這種行爲的負面影響? –
實際上,這種行爲困擾我,因爲我喜歡quickfix窗口跨越整個窗口,當垂直分割存在時,所以我在文件類型插件中包含'wincmd J'。但是有時候我的屏幕布局會變得混亂,並且由於包含警衛的問題,我追查了重複'wincmd J'的原因。儘管我刪除了它,並在許多地方用':botright copen'替換了':copen',但當我忘記了問題並輸入':cope'或者當它被新插件打開時,這仍然很麻煩。所以我想把這個命令放回到filetype插件上。 – mMontu
如果玩QuickFixCmdPost,只有在填充新的quickfix列表時纔會做出反應,那該怎麼辦? (或增加一個計數器,讓你知道你什麼時候真的在處理一個新的quickfix列表?) –