如何在Vim中为不同语言设置不同的选项卡设置?

时间:2009-05-21 07:48:07

标签: vim

在我的.vimrc中,我有一个两个空格的通用标签设置,我想在每种语言基础上覆盖它(即Python等四个,否则使用默认值) ,但我找不到任何好的例子。

5 个答案:

答案 0 :(得分:70)

这些其他答案似乎过于复杂。不要乱用〜/ .vim树中的更多目录和文件,只需将以下内容添加到〜/ .vimrc中。

autocmd Filetype python setlocal expandtab tabstop=4 shiftwidth=4 softtabstop=4

(你可以将l33t和参数缩写为et ts=4 sw=4 sts=4)。我发现了这个 Setting Vim whitespace preferences by filetype

答案 1 :(得分:51)

只需将设置放入filetype插件文件即可 〜/ .vim / ftplugin / LANGUAGE.vim。 我的〜/ .vim / ftplugin / perl.vim包含以下行:

"
" ---------- tabulator / shiftwidth --------------------
"  Set tabulator and shift width to 4 (Perl Style Guide)
"
setlocal  tabstop=4
setlocal  shiftwidth=4
"

这些设置将自动对文件类型为“perl”的每个文件生效 (新的或现有的)。

答案 2 :(得分:22)

我的回答是基于VIM Wiki上的this tip。这个答案使用“after”目录,因此您不必使用提供的插件文件来处理不同的文件类型。

例如,要指定Python文件的自定义设置,请创建一个名为python.vim的文件来保存Python设置:

setlocal expandtab
setlocal shiftwidth=4
setlocal softtabstop=4

将此文件放在

  • ~/.vim/after/ftplugin(Linux)
  • $HOME/vimfiles/after/ftplugin(Windows)

最后,您必须在.vimrc(Linux)或_vimrc(Windows)中使用此功能:

filetype plugin indent on

答案 3 :(得分:9)

通常,您要设置一个特殊的vimrc类型文件,其中包含特定语言的设置,然后在主.vimrc中使用自动命令在必要时执行特殊的vimrc。这是我对Haskell(.hs等)文件的配置:

autocmd! BufNewFile,BufReadPre,FileReadPre  *.hs    so ~/.vim/haskell.vim
autocmd! BufNewFile,BufReadPre,FileReadPre  *.hsc   so ~/.vim/haskell.vim
autocmd! BufNewFile,BufReadPre,FileReadPre  *.lhs   so ~/.vim/haskell.vim
autocmd! BufNewFile,BufReadPre,FileReadPre  *.cabal so ~/.vim/haskell.vim

我的~/.vim/haskell.vim执行类似“set expandtab”的操作,使用空格而不是制表符,还有各种其他魔法用于格式化和类似这样的操作。您经常可以从http://vim.org和其他网站下载各种语言的优秀版本。

请注意,您可以做的不仅仅是更改vim设置。例如,您可以在编辑之前和之后通过过滤器运行文件:

" Edit gpg-encrypted ascii-armoured files
autocmd! BufReadPre,FileReadPre      *.asc  set bin
autocmd  BufReadPost,FileReadPost    *.asc  '[,']!gpg -q -d
autocmd  BufReadPost,FileReadPost    *.asc  set nobin
autocmd! BufWritePre,FileWritePre    *.asc  set bin
autocmd  BufWritePre,FileWritePre    *.asc  '[,']!gpg -e
autocmd  BufWritePost,FileWritePost  *.asc  undo
autocmd  BufWritePost,FileWritePost  *.asc  set nobin

答案 4 :(得分:2)

我使用editor config插件并将.editorconfig文件添加到我的所有项目中 - 它将允许您使用相同的编程语言为不同的项目定义不同的缩进设置,这些设置语言在同一个项目中通常是不同的项目语言有不同的编码标准。

您可以在此处查看可以设置的配置类型示例: http://editorconfig.org/