vim - Quickfix ftplugin 包含防护

标签 vim

由于某种原因,quickfix 文件类型插件的包含防护在其内容更改时不起作用。

~/.vim/ftplugin/qf.vim上插入以下内容

if exists("b:did_ftplugin")
   finish
endif  
call input("qf.vim!")

发出:copen后可以看到来自input()的消息。

但是,尽管包含防护是通过 $VIMRUMTIME 上的默认文件类型插件设置的,如 :echo b:did_ftplugin:1verbose setlocal STL,发出 :copen:cold:cnew:helpg helpg 也会导致消息被显示。

这种情况发生时不需要额外的插件,并且除了文件类型插件缩进之外没有其他设置 并设置不兼容

我的第一个猜测是任何刷新快速修复窗口的命令都会关闭现有缓冲区并打开一个新缓冲区。但在上面的 endif 之后包含 let b:did_ftplugin = 1 可以避免文件类型插件重新加载,因为在第一个 :copen 之后不会显示任何消息(但完全跳过默认文件类型插件,因为不再设置 'STL')。

默认文件类型插件上设置的b:did_ftplugin与我的主目录中设置的b:did_ftplugin之间有什么区别?

最佳答案

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

关于vim - Quickfix ftplugin 包含防护,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21455281/

相关文章:

c++ - 如何在 Windows 上用 Vim 运行 “:compiler msvc” 和 “:comp msbuild”?

python - VIM:当python代码需要输入时出现EOF错误

syntax - vim 具有特定字符的自己的突出显示

java - 有什么方法可以在 Vim/Emacs 中提供 Eclipse 自动错误发现功能?

c - 从 cmd.exe 运行时如何从 cscope-win32 启动 gvim.exe?

vim - 全局子匹配()?

vim - 删除除一行的第一个实例之外的所有内容

python - 我如何确定 vim 缓冲区是否已从 vim 的 python api 中列出或未列出?

Vim 背景偏好

regex - 用 gVim 一起替换文本组