Kann Vim Autocommand durch einen Dateityp anstatt durch ein Muster ausgelöst werden?

1956
njd

Ich weiß, wie ich Funktionen :autocmdfür bestimmte Dateierweiterungen einrichte :

Z.B. ~ / .vim / ftplugin / xml.vim

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

Egal was Setup_XML_Menu()passiert - der Punkt ist, ich setze die Konfiguration ein und setze sie zurück, wenn ich einen XML-Puffer eingebe oder verlasse.

Aber gibt es eine Möglichkeit, stattdessen einen automatischen Befehl für einen bestimmten Dateityp anzuwenden ?

Wenn ich einen Puffer mit dem Namen * .xml eingebe, tritt der BufEnter autocmd wie erwartet ein.
Ich möchte jedoch, dass dies geschieht, wenn ich einen Puffer eingebe, der bereits vorhanden istfiletype=xml

Wenn ich also einen Puffer mit dem Namen server.wsdl eingebe (vorausgesetzt, ich habe bereits den Dateityp dieses Puffers als xml festgelegt ), möchte ich, dass der XML-autocmd auch dort angewendet wird, ohne Autocommands für jede denkbare XML-Dateierweiterung zu konfigurieren.

Ich hoffte, ich könnte so etwas haben:

au BufEnter xml call ... 

oder

au BufEnter filetype xml call ... 

Diese funktionieren jedoch nicht (das erste Beispiel gilt nur für einen Puffer mit dem Namen 'xml').

Die andere Möglichkeit, die ich in Betracht gezogen habe: au FileType xml ...gilt nur, wenn ich den Dateityp des Puffers explizit ändere. Ich möchte, dass die Einstellungen angewendet und entfernt werden, wenn ich in bestimmte Pufferfenster ein- und aussteige.

Frage ich zu viel?

4

1 Antwort auf die Frage

2
Benoit

Sie könnten so etwas tun au BufEnter * if &ft ==# 'xml' | commands | endif