Я не уверен, почему ваш TypeScript сначала определяется как XML (может быть, какой-то другой ответ может погрузиться в это), но может случиться так, что общий (по умолчанию, встроенный) тип файла сначала обнаруживается, а затем пересматриваетсяболее конкретное обнаружение (как в вашем случае, через плагин TypeScript).Проблема в том, что 'equalprg'
задерживается, потому что вы использовали ярлык :autocmd
вместо правильного плагина типа файла :
autocmd FileType xml set equalprg=xmllint\ --format\ -
Если вы хотите включить толькопараметр для определенных типов файлов, используйте :setlocal option=value
(использование :set
сделает установку наследуемой новыми буферами, открытыми из этого, что неверно), и поместите соответствующие команды :setlocal
в ~/.vim/after/ftplugin/{filetype}.vim
, где {filetype}
- это фактический тип файла (например, xml
здесь).(Для этого необходимо, чтобы у вас был :filetype plugin on
; использование каталога после позволяет вам переопределить любые настройки типа файла по умолчанию, сделанные $VIMRUNTIME/ftplugin/{filetype}.vim
.) Правильные плагины также отменяют любые настройки через :help undo_ftplugin
механизм.
Итак, правильная конфигурация в вашем случае заменит :autocmd
на ~/.vim/after/ftplugin/xml.vim
:
setlocal equalprg=xmllint\ --format\ -
let b:undo_ftplugin = (exists('b:undo_ftplugin') ? b:undo_ftplugin . '|' : '') . 'setlocal equalprg<'
При этом 'equalprg'
все равно будет кратко установлендо тех пор, пока тип файла - XML, но он будет отменен командой, определенной в b:undo_ftplugin
, которую Vim выполняет автоматически, когда тип файла меняется на typescript
.