在我的.vimrc中,我有一个两个空格的通用选项卡设置,我想在每种语言基础上覆盖它(也就是说,四个用于Python等,否则使用默认值),但我有找不到任何好的例子.
这些其他答案似乎过于复杂.不要乱用〜/ .vim树中的更多目录和文件,只需将以下内容添加到〜/ .vimrc即可.
autocmd Filetype python setlocal expandtab tabstop=4 shiftwidth=4 softtabstop=4
(你可以是l33t和缩写参数et ts=4 sw=4 sts=4
).我在文件类型中设置Vim空白首选项时发现了这一点
只需将设置放入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"(新的或现有的)的每个文件,这些设置将自动生效.
我的回答是基于VIM Wiki 上的这个提示.这个答案使用"after"目录,因此您不必使用提供的插件文件来处理不同的文件类型.
例如,要指定Python文件的自定义设置,请创建一个名为python.vim
保存Python设置的文件:
setlocal expandtab setlocal shiftwidth=4 setlocal softtabstop=4
将此文件放入其中
~/.vim/after/ftplugin
(Linux)的
$HOME/vimfiles/after/ftplugin
(视窗)
最后,你必须在你的.vimrc
(Linux)或_vimrc
(Windows)中拥有它:
filetype plugin indent on
通常,您要设置一个特殊的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