按文件类型更改Vim缩进行为

时间:2020-03-06 14:59:26  来源:igfitidea点击:

有人可以简单地向我解释根据文件类型更改Vim缩进行为的最简单方法吗?例如,如果我打开Python文件,则应缩进2个空格,但是如果我打开Powershell脚本,则应缩进4个空格。

解决方案

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

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

我们要查找的命令可能是ts =和sw =

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

:autocmd FileType make set noexpandtab

到我的.vimrc文件的末尾,它会将Makefile,makefile和* .mk识别为makefile,并且不会展开选项卡。大概可以扩展它。

使用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

我还建议学习" ts"和" sts"之间的区别。很多人不了解" sts"。

我们可以添加.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,向下滚动到"文件类型插件"部分。

尽管我们可以使用indent插件或者手动使用设置来配置Vim的缩进,但我建议使用一个名为Vindect的python脚本,当我们打开python文件时,该脚本会自动为我们设置相关设置。使用此技巧可以使Vindect更加有效。当我第一次开始编辑由其他人使用各种缩进样式(制表符与空间和空格数)创建的python文件时,它令人难以置信。但是Vindect以及这个缩进文件

还建议:

  • pythonhelper
  • python_match
  • python_ifold