谁能简单地给我解释一下,根据文件类型改变Vim缩进行为的最简单方法是什么?例如,如果我打开一个Python文件,它应该缩进2个空格,但如果我打开一个Powershell脚本,它应该使用4个空格。
当前回答
这可能是我们大多数人都知道的,但无论如何(我第一次感到困惑): 执行:set et (:set expandtabs)不会更改文件中已经存在的选项卡,必须执行:retab。 例如:
:set et
:retab
文件中的制表符被足够的空格替换。要让标签返回简单地做:
:set noet
:retab
其他回答
使用ftplugins或autocommands设置选项。
ftplugin
在~ /维姆- ftplugin python。维姆:
setlocal shiftwidth=2 softtabstop=2 expandtab
别忘了打开~/.vimrc:
filetype plugin indent on
(:h ftplugin获取更多信息)
autocommand
在~ / . vimrc:
autocmd FileType python setlocal shiftwidth=2 softtabstop=2 expandtab
我还建议学习tabstop和softtabstop的区别。很多人都不知道softtabstop。
在Lua(对于Neovim用户)中,您可以使用RUNTIMEPATH/ftplugin/*yourfiletype*。Lua选项如下:
vim.opt_local.shiftwidth = 2
vim.opt_local.tabstop = 2
只是要确保在引号中使用字符串值。例如:
vim.opt_local.foldmethod = 'marker'
我通常使用expandtab set,但这对makefile不好。我最近补充道:
:autocmd FileType make set noexpandtab
到。vimrc文件的末尾,它可以识别Makefile, Makefile和*。Mk作为makefile文件,不展开制表符。可以推测,您可以扩展它。
编辑~/。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空白参数
今天,你可以尝试editorconfig,也有一个vim插件。这样,您不仅可以在vim中更改缩进大小,而且可以在许多其他编辑器中保持一致的编码风格。
下面是一个简单的编辑配置,如你所见,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
推荐文章
- 如何在Python中获得所有直接子目录
- 在Vim中如何从“gf”返回
- 即使模板文件存在,Flask也会引发TemplateNotFound错误
- 如何在Ruby中创建文件
- __FILE__宏显示完整路径
- 如何在Vim注释掉一个Python代码块
- 如何在可视块模式插入?
- 如何使制表符4个空间而不是8个空间在纳米?
- 如何设置我的phpmyadmin用户会话不超时这么快?
- 如何将文件指针(file * fp)转换为文件描述符(int fd)?
- 强迫自己掌握vi的最好方法是什么?
- 如何在Atom中更改缩进模式?
- 如何回到行之前编辑的最后一个在Vim?
- 如何删除文件中的特定行?
- 如何缩进/格式选择的代码在Visual Studio代码?