我不能告诉你如何确定应该阅读lang_perl或lang_ruby 。 但是看一下autocommand文档会给gzip文件带来一个例子( :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 :r
autocmd BufWritePost,FileWritePost *.gz !gzip :r
autocmd FileAppendPre *.gz !gunzip
autocmd FileAppendPre *.gz !mv :r
autocmd FileAppendPost *.gz !mv :r
autocmd FileAppendPost *.gz !gzip :r
augroup END
看见? 指定的每个autocmd都带有一个Event( BufReadPre , FileReadPre )和它将被执行的扩展( *.gz )。 这是对我迄今为止的意见的支持,你可以使用任何名称为你的augroup但必须指定一个扩展, augroup应负责,以使其正常工作。
另一个引用:he autocmd-groups :
通常,在自动执行自动命令时,Vim会对所有组使用自动命令。 只有在使用“:doautocmd”或“:doautoall”执行自动命令时,或者在定义或删除自动命令时,该组才有用。
因此,为了为matlab文件制作一个augroup ,这个应该可以解决这个问题:
augroup lang_matlab
autocmd!
autocmd BufRead *.m set ts=4 sw=4 expandtab
augroup END
并确保这些设置不会被任何无条件的augroup覆盖(即修改其他的augroup定义)。