Vim 自动命令可以通过文件类型而不是模式触发吗?

Vim 自动命令可以通过文件类型而不是模式触发吗?

我知道如何使用:autocmd特定文件扩展名设置功能:

例如。~/.vim/ftplugin/xml.vim

augroup xml
    au BufEnter *.xml call Setup_XML_Menu()
    au BufLeave *.xml call Destroy_XML_Menu()
augroup END

别介意Setup_XML_Menu()做什么 - 重点是当我进入或离开 XML 缓冲区时我正在设置和重置配置。

但有没有办法将自动命令应用于特定的文件类型反而?

如果我输入名为 *.xml 的缓冲区,BufEnter 自动命令就会按预期启动。
但我希望在输入时发生这种情况任何缓冲区filetype=xml

因此,如果我进入一个名为 server.wsdl 的缓冲区(假设我已经安排此缓冲区的文件类型为xml), 我希望 XML 自动命令也能在那里应用,而不必为每个可以想到的 XML 文件扩展名配置自动命令。

我希望我能有类似的东西:

au BufEnter xml call ...

或者

au BufEnter filetype xml call ...

但这些不起作用(第一个例子仅适用于名为“xml”的缓冲区)。

我考虑的另一种可能性:au FileType xml ...仅当我明确更改缓冲区的文件类型时才适用 - 我希望在我跳入和跳出特定缓冲区窗口时应用和删除设置。

我是不是要求太多了?

答案1

你可以做类似的事情au BufEnter * if &ft ==# 'xml' | commands | endif

相关内容