谁能简单地给我解释一下,根据文件类型改变Vim缩进行为的最简单方法是什么?例如,如果我打开一个Python文件,它应该缩进2个空格,但如果我打开一个Powershell脚本,它应该使用4个空格。


当前回答

我通常使用expandtab set,但这对makefile不好。我最近补充道:

:autocmd FileType make set noexpandtab

到。vimrc文件的末尾,它可以识别Makefile, Makefile和*。Mk作为makefile文件,不展开制表符。可以推测,您可以扩展它。

其他回答

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

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

虽然你可以使用缩进插件或手动使用设置来配置Vim的缩进,但我建议使用一个名为Vindect的python脚本,当你打开一个python文件时,它会自动为你设置相关设置。使用这个技巧可以使Vindect的使用更加有效。当我第一次开始编辑别人用各种缩进样式(制表符vs空格和空格数量)创建的python文件时,这令人难以置信地沮丧。但是Vindect和这个缩进文件一起

还建议:

pythonhelper python_match python_ifold

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

:set et
:retab

文件中的制表符被足够的空格替换。要让标签返回简单地做:

:set noet
:retab

我通常使用expandtab set,但这对makefile不好。我最近补充道:

:autocmd FileType make set noexpandtab

到。vimrc文件的末尾,它可以识别Makefile, Makefile和*。Mk作为makefile文件,不展开制表符。可以推测,您可以扩展它。

在Lua(对于Neovim用户)中,您可以使用RUNTIMEPATH/ftplugin/*yourfiletype*。Lua选项如下:

vim.opt_local.shiftwidth  = 2
vim.opt_local.tabstop     = 2

只是要确保在引号中使用字符串值。例如:

vim.opt_local.foldmethod  = 'marker'