O autocommand do Vim pode ser acionado por tipo de arquivo em vez de por padrão?

3

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?

    
por njd 22.12.2011 / 13:30

1 resposta

2

Você pode fazer algo como au BufEnter * if &ft ==# 'xml' | commands | endif

    
por 22.12.2011 / 13:48