4

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

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

1 ответ1

2

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .