如何在 Vim 中使用 FileType?

如何在 Vim 中使用 FileType?

大多数情况下,我想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()

每当文件加载到缓冲区或文件类型发生更改时,都会触发此事件。唯一的问题是,如果您将缓冲区从一种自定义类型更改回默认类型。在这种情况下,什么都不会改变。如果您需要涵盖该用例,则必须设置另一个函数来触发所有文件类型。

相关内容