如何在Vim中为不同语言设置不同的标签设置?
在我的.vimrc我有一个通用的标签设置为两个空格,我想覆盖每个基本语言(即,四个Python等,否则使用默认),但我有麻烦find这样的一个很好的例子。
只需将设置放入文件types插件文件〜/ .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 "
对于文件types为“perl”(新的或现有的)的每个文件,这些设置将自动生效。
这些其他答案似乎太复杂。 不要在〜/ .vim树中混淆更多的目录和文件,只需将以下内容添加到〜/ .vimrc中即可。
autocmd Filetype python setlocal expandtab tabstop=4 shiftwidth=4 softtabstop=4
(你可以是lt3t和缩写参数, et ts=4 sw=4 sts=4
)。 我通过filetype设置了Vim空白首选项
我的回答是基于VIM Wiki上的这个提示 。 这个答案使用“后”目录,所以你不必为提供不同的文件types提供的插件文件。
例如,要指定Python文件的自定义设置,请创build一个名为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
通常,你所做的就是设置一个特殊的vimrctypes的文件,其中包含特定语言的设置,然后在主要的.vimrc中使用自动命令来在必要时执行特殊的vimrc。 这里是我的Haskell( .hs
等)文件的configuration:
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设置外,您还可以做更多的事情。 例如,您可以在编辑之前和之后通过filter运行该文件:
" 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
我使用编辑器configuration插件,并将.editorconfig文件添加到我的所有项目中 – 它将允许您使用相同的编程语言为不同的项目定义不同的缩进设置,因为相同语言中的不同项目经常具有不同的编码标准。
你可以在这里看到一个你可以设置的configurationtypes的例子: http : //editorconfig.org/