按文件类型改变Vim的压痕行为(Changing Vim indentation behavior

2019-08-20 19:39发布

可能有人深入浅出的讲解给我换基于文件类型的Vim的压痕行为的最简单的方法? 举例来说,如果我打开一个Python文件,它应该有2个空格缩进,但是如果我打开一个PowerShell脚本应该使用4个空格。

Answer 1:

您可以添加.vim文件执行vim的时候切换到一个特定的文件类型。

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

setlocal shiftwidth=2
setlocal tabstop=2

这导致Vim用的2个字符的宽度使用标签来缩进(该noexpandtab选项设置全局别处在我的配置)。

这说明如下: http://vimdoc.sourceforge.net/htmldoc/usr_05.html#05.4 ,向下滚动到文件类型插件的部分。



Answer 2:

使用ftplugins或自动命令来设置选项。

文件类型插件

~/.vim/ftplugin/python.vim:

setlocal shiftwidth=2 softtabstop=2 expandtab

而且不要忘了打开它们在~/.vimrc

filetype plugin indent on

:h ftplugin获得更多信息)

自动命令

~/.vimrc

autocmd FileType python setlocal shiftwidth=2 softtabstop=2 expandtab

您可以代替任何的长命令或设置及其短版本:
autocmdau
setlocalsetl
shiftwidthsw
tabstopts
softtabstopsts
expandtabet

我也建议学习之间的区别tabstopsofttabstop 。 很多人不知道softtabstop



Answer 3:

编辑你~/.vimrc ,并针对不同的缩进添加不同的文件类型,例如我想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

是指: 由文件类型设置Vim的空白喜好



Answer 4:

把自动命令基于文件后缀命令你的〜/ .vimrc

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

你要找的命令可能是TS =和SW =



Answer 5:

我通常工作expandtab集,但是这是很糟糕的makefile文件。 最近,我说:

:autocmd FileType make set noexpandtab

我的.vimrc文件的末尾,它承认的Makefile,makefile文件,并且* .mk是makefile和不扩大的选项卡。 据推测,你可以扩展。



Answer 6:

我总是谁更改选项卡的大小不同文件类型的人感到惊讶。 你什么时候看少用一个文件,你做这到底?

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

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


Answer 7:

这可能是由我们大多数人知道,但无论如何,(我很困惑我的第一次):这样做:set et:set expandtabs)不改变标签已经在文件中存在的,一个必须做:retab 。 例如:

:set et
:retab

而文件中的选项卡由足够的空间所取代。 有标签背面简单地做:

:set noet
:retab


Answer 8:

今天,你可以尝试editorconfig ,还有一个VIM插件吧。 有了这个,你可以不仅改变压痕尺寸在vim,但在许多其他的编辑,保持一致的编码风格。

下面是一个简单editorconfig,你可以看到,蟒蛇文件将有4个空格来缩进,哈巴狗模板文件将只有2。

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

# 2 space indentation for pug templates
[*.pug]
indent_size = 2


Answer 9:

虽然你可以就好使用缩进插件或使用手动设置来配置Vim的压痕,我建议使用名为Python脚本Vindect当你打开Python文件自动设置相关的设置你。 使用这个技巧使用Vindect更有效的进行。 当我第一次被别人用了各种各样的缩进样式(标签VS空间和空间的数量)创建编辑Python文件,这是非常令人沮丧。 但是Vindect随着该缩进文件

还建议:

  • pythonhelper
  • python_match
  • python_ifold


Answer 10:

我用我在用C写了一个称为autotab 。 分析了第一几千行,你负荷,并确定了Vim的参数值的文件的shiftwidthtabstopexpandtab

这是使用编译的,例如, gcc -O autotab.c -o autotab 。 说明用Vim集成在顶部的评论标题。

在AutoTab为相当聪明的,但可以通过已经使用不同的缩进风格一直保持不一致不时感到困惑地时候,尤其如此。

如果一个文件显然使用制表符,或制表符和空格的组合,压痕,Autotab将弄清楚正在使用什么标签尺寸通过考虑跨等连续行内的元素,如注释的对准的因素。

它适用于多种编程语言,并且是宽容对于不服从缩进增量“带外”的元素,如C预处理指令,C语句标签,更不用说明显的空行。



文章来源: Changing Vim indentation behavior by file type