从 autocmd 模式中排除帮助和插件页面

Exclude help and plugin pages from autocmd pattern

我想写像autocmd BufAdd * if &filetype != 'help' | echo 'foo'这样的命令,但是没用。我尝试了不同的选项:&l:filetype&buftype&l:buftype;尝试切换 filetype 设置,但没有任何改变。全局命令 autocmd BufAdd * echo 'bar' 在任何地方都有效,包括帮助页面,同时 :echo &filetype 在帮助页面 returns help 上。我做错了什么?

因为,

  1. 虽然在 BufAdd 中,当前缓冲区可能(而且很可能)与匹配的缓冲区不同;
  2. 虽然在 BufAdd 中,匹配的缓冲区可能(并且很可能)尚未设置任何 &filetype

请注意,通常应该使用 ~/.vim/after/ftplugin/xyz.vim 挂接到某些特定的文件类型。