大多数情况下,我想tabstop=4
在编辑文件时使用。但对于某些类型的文件,例如 xml 文件,我想使用tabstop=2
.
我添加了
au filetypedetect FileType xml,html,xhtml,javascript set tabstop=2 softtabstop=2 shiftwidth=2
在我的.vimrc
文件中。如果我只编辑一个文件,它就有效。但如果我正在编辑多个文件,它无法为所有缓冲区正确设置制表位。似乎文件类型仅在启动时才被检测和设置,此后再也没有改变。
FileType
我每次切换缓冲区时都想要设置。我怎样才能做到这一点?
答案1
我不确定为什么您的版本不起作用,但我可以使用该call
选项并将设置放入如下函数中来执行此操作:
set tabstop=4
set softtabstop=4
set shiftwidth=4
function! setAltPrefs()
set tabstop=2
set softtabstop=2
set shiftwidth=2
endfunction
autocmd FileType xml,html,xhtml,javascript call setAltPrefs()
每当文件加载到缓冲区或文件类型发生更改时,都会触发此事件。唯一的问题是,如果您将缓冲区从一种自定义类型更改回默认类型。在这种情况下,什么都不会改变。如果您需要涵盖该用例,则必须设置另一个函数来触发所有文件类型。