VS Code Python autopep8不支持2个空格的缩进

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VS Code Python autopep8不支持2个空格的缩进相关的知识,希望对你有一定的参考价值。

我正在尝试使autopep8正确缩进2个空格而不是4个空格的Python代码。我正在使用VS Code和Python扩展,该扩展使用autopep8进行格式化。我发现here可以将autopep8配置为使用2个空格,方法是

"python.formatting.autopep8Args": ["--indent-size=2"]

但是它对我不起作用。

我的情况就是这样。当我按Enter键时,它将以与上一行相同的缩进正确地开始下一行。打开括号后按Enter键,它将正确地以另外2个空格开始新行。但是,当我粘贴或保存(将“ editor.formatOnPaste”和“ editor.formatOnSave”设置为true)时,令人讨厌的事情发生了:括号内的所有2位空格缩进都变为4(其他2位空格缩进不受影响) 。为什么这样做,如何在每个地方都设置2个空间?

enter image description here

====编辑====

我发现pylint错误Wrong hanging indentation (remove 2 spaces). [bad-continuation]。这是因为我的pylintrc具有indent-after-paren=2。我想知道autopep8或其他Python格式化程序是否可以设置此属性?

答案

我还必须将它包含在settings.json中的数组中,与您的相似。

"--ignore E121"

根据https://pypi.org/project/autopep8/,此设置可确保您的缩进是4的倍数。通过不强制执行,将使用VSCode中配置的制表符大小。

E121 - Fix indentation to be a multiple of four.

话虽如此,根据pep8,您的缩进仍然是“可以接受的”,因此实际上不会将其更改为您期望的4个空格。我不得不挖掘一个级别,然后再次运行时,它并没有改变。

不幸的是,这实际上只是一种解决方法,它实际上会对其他缩进规则产生负面影响...

您可以在pep8的代码中看到,他们将默认的制表符大小硬编码为“ python方式”(4个空格):

https://github.com/hhatto/autopep8/blob/120537a051d7f3cbbb5c4ede19b9e515156bd3d1/autopep8.py#L104

这看起来好像悬挂的缩进只是不尊重--indent-size选项...

以上是关于VS Code Python autopep8不支持2个空格的缩进的主要内容,如果未能解决你的问题,请参考以下文章

python基础autopep8__python代码规范

vscode安装离线插件autopep8

python中使用pycharm2018工具安装Autopep8

python3:unexpected indent?indent expected?autopep8!

python3:unexpected indent?indent expected?autopep8!

Visual Studio 代码,autopep8 不运行