在 Vim 中为不同的语言设置不同的设置

Set different settings for different languages in Vim

我想为不同的语言设置不同的设置或 文件类型。

每种语言都有自己的风格指南(例如,不同的制表符大小、空格代替制表符等)所以我无法在我的 .vimrc 中添加以下设置,因为我将 vim 与多个语言一起使用语言。每种语言的设置应该是分开的

Python 4 个空格缩进样式的文件设置:

set tabstop=4 
set shiftwidth=4

JavaScript 2 个空格缩进样式的文件设置:

set tabstop=2 
set shiftwidth=2
autocmd FileType python call Python_settings()

function! Python_settings()
  setlocal tabstop=4
  setlocal shiftwidth=4
  setlocal expandtab
endfunction

Vim 带有内置的文件类型检测功能,除其他外,它可以针对不同的文件类型执行不同的操作。

要使该机制起作用,您需要 以下行中的 vimrc:

filetype on
filetype indent on
filetype plugin on
filetype indent plugin on    " the order of 'indent' and 'plugin' is irrelevant
  • 第一行只启用文件类型检测。
  • 第二行和第一行一样,加上特定于文件类型的缩进。
  • 第三行与第一行类似,加上特定于文件类型的设置。
  • 第四行启用一切。

假设您以下行之一:

filetype plugin on
filetype indent plugin on

您可以使用以下内容创建 $HOME/vim/after/ftplugin/javascript.vim

setlocal tabstop=2
setlocal shiftwidth=2
    使用
  • :setlocal 而不是 :set 来使这些设置成为局部缓冲区,从而防止它们泄漏到其他缓冲区中。
  • after 目录用于确保最后获取您的设置。

仍然假设您启用了 ftplugins,Python 没有什么可做的,因为默认的 ftplugin 已经按照您想要的方式设置了这些选项。