Você pode fazer algo como au BufEnter * if &ft ==# 'xml' | commands | endif
Eu sei como configurar recursos usando :autocmd
para extensões de arquivo específicas:
~ / .vim / ftplugin / xml.vim
augroup xml
au BufEnter *.xml call Setup_XML_Menu()
au BufLeave *.xml call Destroy_XML_Menu()
augroup END
Não importa o que Setup_XML_Menu()
faça - o ponto é que estou configurando e redefinindo a configuração quando eu entro ou saio de um buffer XML.
Mas existe uma maneira de aplicar um comando automático a um determinado tipo de arquivo ?
Se eu inserir um buffer chamado * .xml, o autocmd BufEnter entra em ação como esperado.
Mas eu gostaria que isso acontecesse quando eu entrar qualquer buffer que tenha filetype=xml
Então, se eu inserir um buffer chamado server.wsdl (suponha que eu já tenha organizado o tipo de arquivo do buffer como xml ), gostaria que o autocmd XML fosse aplicado lá também, sem configurando autocommands para cada extensão de arquivo XML concebível.
Eu esperava poder ter algo como:
au BufEnter xml call ...
ou
au BufEnter filetype xml call ...
Mas isso não funciona (o primeiro exemplo aplica-se apenas a um buffer chamado 'xml').
A outra possibilidade que considerei: au FileType xml ...
só se aplica quando eu explicitamente altero o tipo de arquivo do buffer - eu quero que as configurações sejam aplicadas e removidas quando eu entro e saí de determinadas janelas de buffer.
Estou pedindo demais?
Você pode fazer algo como au BufEnter * if &ft ==# 'xml' | commands | endif