Примечание
Я использую локальный плагин vim, который позволяет мне использовать проектный файл .vimrc, в целом он работает нормально и, как и следовало ожидать.
Фон
Я работаю с Silverstripe, и поэтому должен работать с шаблонами Silverstripe, которые являются * .ss файлами, однако по умолчанию vim назначает * .ss файлам схемы. Теперь я использую Silverstripe только для одного проекта и использую html-тип файла, установленный в моем проекте .vimrc для подсветки, однако, обнаружив несколько ошибок, я решил добавить подсветку для файлов * .ss в htmlss. VIM-файл (используя html.vim в качестве основы, я просто добавил шаблон правил в конце). После небольшого количества проб и ошибок я заставил это работать и выделение должным образом, однако я столкнулся со странной ошибкой ...
Вопрос
Использование этого проекта .vimrc:
augroup filetypedetect
autocmd! * *.ss
autocmd! BufEnter *.ss setf htmlss
augroup END
Однако все работает нормально, используя этот .vimrc:
augroup filetypedetect
autocmd! * *.ss
autocmd! BufEnter,BufRead,BufNewFile *.ss setf htmlss
augroup END
Сбой подсветки синтаксиса, он правильно устанавливает тип файла, но подсветка идет не так, как надо.
Полагаю, я хочу знать, почему работает версия 1, а версия 2 - нет, несмотря на то, что ничего не меняется.
добавление
После небольшого исследования я обнаружил, что удаление autocmd! * *.ss
делает второе действие, только если я удаляю !
из autocmd! BufEnter,BufRead,BufNewFile *.ss setf htmlss
. т.е.
augroup filetypedetect
autocmd BufEnter,BufRead,BufNewFile *.ss setf htmlss
augroup END
работает, но
augroup filetypedetect
autocmd! BufEnter,BufRead,BufNewFile *.ss setf htmlss
augroup END
и
augroup filetypedetect
autocmd! * *.ss
autocmd BufEnter,BufRead,BufNewFile *.ss setf htmlss
augroup END
нет.
Опять же, мой вопрос: почему эти различия возникают, у меня сейчас есть рабочая реализация, поэтому я не заинтересован ни в каком расследовании. Я не хочу решений, так как у меня нет проблем.