如果你想为{filetype}设置大量的设置,你应该将它们放入〜/ .vim / ftplugin / {filetype} .vim或与〜/ .vim / ftplugin / {filetype} / **相匹配的文件中/*.vim(例如:〜/ .vim / ftplugin / ruby / foo.vim,〜/ .vim / ftplugin / ruby / foo / bar.vim).在这种情况下,您根本不需要任何自动命令.如果您仍想使用自动命令,请使用以下命令:
augroup lang_matlab
autocmd!
autocmd FileType matlab setlocal ts=4 sw=4 et
augroup END
.注意两件事:FileType事件(它在那里,它不是BufRead,BufNewFile)和setlocal而不是普通集.第一个用于文件类型设置,第二个是如何设置特定于缓冲区的选项.
关于为什么perl和ruby设置有效以及为什么matlab设置没有:你的示例代码与之相同
augroup lang_perl
autocmd!
augroup END
augroup lang_ruby
autocmd!
augroup END
set tabstop=4 " tabstop length N in spaces
set shiftwidth=4 " make >> and friends (<
set expandtab " Use spaces instead of tabs
set tabstop=2 " tabstop length N in spaces
set shiftwidth=2 " make >> and friends (<
set expandtab " Use spaces instead of tabs
所以,你有效地设置ts = 2 sw = 2 et.但$VIMRUNTIME / ftplugin / perl.vim包含以下代码:
setlocal tabstop=4
setlocal shiftwidth=4
所以,perl的ts = 4 sw = 4设置为ftplugin / perl.vim,而不是你的vimrc(如果你已经安装了perl-support插件).你可以通过在vimrc中用tabstop = 8替换tabstop = 4来检查它.