我知道如何使用: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