问题描述
我想写像 autocmd BufAdd * if &filetype != 'help' | echo 'foo'
这样的命令,但是没有用。我尝试了不同的选项:&l:filetype
、&buftype
、&l:buftype
;尝试切换 filetype
设置,但没有任何改变。无处不在的全局命令 autocmd BufAdd * echo 'bar'
包括帮助页面,同时帮助页面上的 :echo &filetype
返回 help
。我做错了什么?
解决方法
因为,
- 虽然在
BufAdd
中,当前缓冲区可能(并且很可能)与匹配的缓冲区不同; - 虽然在
BufAdd
中,匹配的缓冲区可能(并且很可能不会)尚未设置任何&filetype
。
请注意,通常应该使用 ~/.vim/after/ftplugin/xyz.vim
挂钩到某些特定的文件类型。