Quickfix ftplugin包含守护

时间:2014-01-30 11:31:24

标签: vim

由于某些原因,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'设置和我家的目录设置之间有什么区别?

1 个答案:

答案 0 :(得分:2)

quickfix窗口主要是一个视图(窗口),但是(出于实现原因)它由Vim 缓冲区支持。当我:cclose一个quickfix窗口,然后再次:copen时,:ls!命令显示一个递增的缓冲区编号。我认为这可以解释你所看到的行为。