按文件types更改Vim缩进行为

有人可以简单地向我解释根据文件types改变Vim压缩行为的最简单的方法吗? 例如,如果我打开一个Python文件,它应该缩进2个空格,但是如果我打开一个Powershell脚本,它应该使用4个空格。

只要vim切换到特定的文件types,就可以添加.vim文件来执行。

例如,我有一个文件~/.vim/after/ftplugin/html.vim与这个内容:

 setlocal shiftwidth=2 setlocal tabstop=2 

这导致vim使用宽度为2个字符的标签进行缩进( noexpandtab选项在我的configuration中的其他地方全局设置)。

这在这里描述: http : //vimdoc.sourceforge.net/htmldoc/usr_05.html#05.4 ,向下滚动到文件types插件的部分。

使用ftplugins或自动命令来设置选项。 (:h ftplugin了解更多信息)

在〜/ .vim / ftplugin / python.vim中:

 setlocal sw=2 sts=2 et 

不要忘记在〜/ .vimrc中打开它们

 filetype plugin indent on 

或者在〜/ .vimrc中

 au FileType python setl sw=2 sts=2 et 

我也build议学习'ts'和'sts'之间的区别。 很多人不知道“sts”。

将基于文件后缀的autocmd命令放在〜/ .vimrc中

 autocmd BufRead,BufNewFile *.c,*.h,*.java set noic cin noexpandtab autocmd BufRead,BufNewFile *.pl syntax on 

您正在查找的命令可能是ts =和sw =

编辑你的~/.vimrc ,为不同的缩进添加不同的文件types,比如我想html/rb缩进2个空格, js/coffee文件缩进4个空格:

 # by default, the indent is 2 spaces. set shiftwidth=2 set softtabstop=2 set tabstop=2 # for html/rb files, 2 spaces autocmd Filetype html setlocal ts=2 sw=2 expandtab autocmd Filetype ruby setlocal ts=2 sw=2 expandtab # for js/coffee/jade files, 4 spaces autocmd Filetype javascript setlocal ts=4 sw=4 sts=0 expandtab autocmd Filetype coffeescript setlocal ts=4 sw=4 sts=0 expandtab autocmd Filetype jade setlocal ts=4 sw=4 sts=0 expandtab 

请参阅: 通过filetype设置Vim空白首选项

我通常使用expandtab设置,但这对makefile不好。 我最近补充说:

 :autocmd FileType make set noexpandtab 

到我的.vimrc文件的结尾,它将Makefile,makefile和* .mk识别为makefiles,并且不会扩展选项卡。 据推测,你可以延长这一点。

我总是为改变不同文件types的标签大小而感到惊讶。 当你用较less的文件查看文件时,你究竟做了什么?

就个人而言,我在.vimrc中使用这些设置:

 autocmd FileType python set tabstop=8|set shiftwidth=2|set expandtab autocmd FileType ruby set tabstop=8|set shiftwidth=2|set expandtab 

这可能是我们大多数人都知道的,但无论如何(我第一次感到困惑):做:set et:set expandtabs)不会改变文件中已经存在的选项卡,必须做:retab 。 例如:

 :set et :retab 

并在文件中的选项卡被replace为足够的空间。 要简单地返回制表符:

 :set noet :retab 

尽pipe可以使用indent插件configurationVim的缩进,或者手动使用设置,但我build议使用名为Vindect的Python脚本,当您打开python文件时,会自动为您设置相关设置。 使用这个技巧使使用Vindect更加有效。 当我第一次开始编辑由其他缩进样式的其他人创build的python文件(制表符vs空格和空格数)时,这是令人难以置信的令人沮丧的。 但Vindect与此缩进文件

另外推荐:

  • pythonhelper
  • python_match
  • python_ifold

今天,你可以尝试一下editorconfig ,还有一个vim的插件 。 有了这个,你不但可以改变vim中的缩进大小,而且还可以在其他许多编辑器中保持一致的编码风格。

下面是一个简单的editorconfig,你可以看到,python文件将有4个空格用于缩进,而pug模板文件只有2个。

 # 4 space indentation for python files [*.py] indent_style = space indent_size = 4 # 2 space indentation for pug templates [*.pug] indent_size = 2 

我使用了一个我用C写的实用程序,叫做autotab 。 它分析一个文件的前几千行,加载并确定Vim参数shiftwidthtabstopexpandtab

这是使用例如gcc -O autotab.c -o autotab 。 与Vim集成的说明位于顶部的注释标题中。

Autotab相当聪明,但可能会不时地感到困惑,特别是使用不同的缩进样式不一致地维护。

如果文件显然使用制表符或制表符和空格的组合来缩进,Autotab将通过考虑诸如注释之类的连续行内部元素的alignment等因素来计算出正在使用的制表符大小。

它适用于各种编程语言,并且宽恕不符合缩进增量的“带外”元素,如C预处理指令,C语句标签,更不用说明显的空白行。