Я не могу сказать вам, как определяется, что lang_perl
или lang_ruby
должны быть прочитаны. Но при просмотре документации по автокоманде возникает пример для сжатых файлов (:he gzip-example
):
augroup gzip
autocmd!
autocmd BufReadPre,FileReadPre *.gz set bin
autocmd BufReadPost,FileReadPost *.gz '[,']!gunzip
autocmd BufReadPost,FileReadPost *.gz set nobin
autocmd BufReadPost,FileReadPost *.gz execute ":doautocmd BufReadPost " . expand("%:r")
autocmd BufWritePost,FileWritePost *.gz !mv <afile> <afile>:r
autocmd BufWritePost,FileWritePost *.gz !gzip <afile>:r
autocmd FileAppendPre *.gz !gunzip <afile>
autocmd FileAppendPre *.gz !mv <afile>:r <afile>
autocmd FileAppendPost *.gz !mv <afile> <afile>:r
autocmd FileAppendPost *.gz !gzip <afile>:r
augroup END
Видишь? Каждое autocmd
, которое получает указанное, несет Событие (BufReadPre
, FileReadPre
) и расширение, для которого оно должно быть выполнено (*.gz
). Это подкрепляет мое до сих пор мнение, что вы можете использовать любое имя для augroup
, но вам нужно указать расширение, за которое augroup
будет отвечать, чтобы заставить его работать правильно.
Другая цитата из :he autocmd-groups
:
Обычно при автоматическом выполнении автокоманд Vim использует автокоманды
для всех групп. Группа имеет значение только при выполнении автокоманд с
": doautocmd" или ": doautoall", или при определении или удалении автокоманд.
Итак, чтобы сделать augroup
для файлов Matlab, нужно сделать следующее:
augroup lang_matlab
autocmd!
autocmd BufRead *.m set ts=4 sw=4 expandtab
augroup END
И убедитесь, что эти настройки не перезаписываются никакими augroup
с, которые делают что-то безусловное (то есть изменяют также другие определения augroup
).