由于某些原因,quickfix filetype插件的包含保护在其内容更改时不起作用。
在~/.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窗口的任何命令都会关闭现有缓冲区并打开一个新缓冲区。但是在上面的let b:did_ftplugin = 1
之后包含endif
会避免文件类型插件重新加载,因为在第一个:copen
之后没有显示消息(但是完全跳过了默认文件类型插件,因为{{1} }不再设置了。)
默认文件类型插件上的'stl'
设置和我家的目录设置之间有什么区别?
答案 0 :(得分:2)
quickfix窗口主要是一个视图(窗口),但是(出于实现原因)它由Vim 缓冲区支持。当我:cclose
一个quickfix窗口,然后再次:copen
时,:ls!
命令显示一个递增的缓冲区编号。我认为这可以解释你所看到的行为。