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

时间:2021-07-31 14:26:15

标签: vim neovim

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

每种语言都有自己的样式指南(例如,不同的制表符大小、空格而不是制表符等),因此我无法在 .vimrc 中添加以下设置,因为我将 vim 用于多种语言。每种语言的设置应该分开

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

set tabstop=4 
set shiftwidth=4

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

set tabstop=2 
set shiftwidth=2

2 个答案:

答案 0 :(得分:3)

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 已经按照您想要的方式设置了这些选项。

答案 1 :(得分:0)

autocmd FileType python call Python_settings()

function! Python_settings()
  setlocal tabstop=4
  setlocal shiftwidth=4
  setlocal expandtab
endfunction
相关问题