按文件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参数shiftwidth
, tabstop
和expandtab
。
这是使用例如gcc -O autotab.c -o autotab
。 与Vim集成的说明位于顶部的注释标题中。
Autotab相当聪明,但可能会不时地感到困惑,特别是使用不同的缩进样式不一致地维护。
如果文件显然使用制表符或制表符和空格的组合来缩进,Autotab将通过考虑诸如注释之类的连续行内部元素的alignment等因素来计算出正在使用的制表符大小。
它适用于各种编程语言,并且宽恕不符合缩进增量的“带外”元素,如C预处理指令,C语句标签,更不用说明显的空白行。