Может ли автокоманда Vim запускаться по типу файла, а не по шаблону?

1666
njd

Я знаю, как настроить функции :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 autocmd включится, как я и ожидал.
Но я бы хотел, чтобы это произошло, когда я вхожу в любой буферfiletype=xml

Поэтому, если я введу буфер с именем server.wsdl (предположим, я уже организовал, чтобы тип файла этого буфера был xml ), я бы хотел, чтобы там также применялся autocmd XML без настройки автокоманд для каждого мыслимого расширения файла XML.

Я надеялся, что смогу получить что-то вроде:

au BufEnter xml call ... 

или же

au BufEnter filetype xml call ... 

Но они не работают (первый пример относится только к буферу с именем «xml»).

Другая возможность, которую я рассмотрел: au FileType xml ...применяется только тогда, когда я явно изменяю тип файла буфера - я хочу, чтобы настройки применялись и удалялись, когда я вхожу в определенные окна буфера и из них.

Я слишком много спрашиваю?

4

1 ответ на вопрос

2
Benoit

Вы могли бы сделать что-то вроде au BufEnter * if &ft ==# 'xml' | commands | endif