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

Log*_*ang 12 python autopep8 visual-studio-code

我试图让 autopep8 工作以正确缩进带有 2 个空格而不是 4 个空格的 Python 代码。我正在使用带有 Python 扩展的 VS Code,它使用 autopep8 进行格式化。我在这里发现可以将 autopep8 配置为使用 2 个空格

"python.formatting.autopep8Args": ["--indent-size=2"]
Run Code Online (Sandbox Code Playgroud)

但它对我不起作用。

我的情况是这样的。当我按回车键时,它正确地开始下一行,缩进与上一行相同。在一个左括号后按回车,它会正确地以另外 2 个空格开始新行。但是当我粘贴或保存时(我将“editor.formatOnPaste”和“editor.formatOnSave”设置为true),烦人的事情发生了:括号内的所有2空格缩进都变成了4(其他2空格缩进不受影响) . 为什么要这样做,我怎样才能让它到处都是 2 个空格?

在此处输入图片说明

====编辑====

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

Mut*_*esh 19

添加--indent-size=2 --ignore=E121对我有用。 autopep8 缩进大小 2


Itt*_*tta 9

"autopep8.args"相反,使用"python.formatting.autopep8Args"对我有用。

"autopep8.args": [
  "--indent-size=2"
]
Run Code Online (Sandbox Code Playgroud)


小智 7

有同样的问题,这是解决方案:

  1. 导航到您环境的库目录
  2. 打开autopep8.py
  3. 搜索“DEFAULT_INDENT_SIZE”并将其更改为 2


Kri*_*aly 5

我还必须将它包含在 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 选项......