【问题标题】:VS Code Python autopep8 does not honor 2 spaces hanging indentationVS Code Python autopep8 不支持 2 个空格悬挂缩进
【发布时间】:2019-01-29 22:16:52
【问题描述】:

我正在尝试让 autopep8 正确缩进 Python 代码,其中包含 2 个空格而不是 4 个空格。我正在使用带有 Python 扩展的 VS Code,它使用 autopep8 进行格式化。我发现 here 可以将 autopep8 配置为使用 2 个空格

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

但这对我不起作用。

我的情况是这样的。当我按下回车键时,它会正确地开始下一行,其缩进与前一行相同。在左括号后按回车键,它会正确地以另外 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 格式化程序是否可以设置此属性?

【问题讨论】:

  • 我很好奇你为什么想要有 2 个(悬挂)缩进空间; the standard is 4 spaces.
  • 这只是偏好。问题是是否有办法定制它。
  • 我知道你的问题是什么。但我倾向于说:跟随世界的标准/其他地方。它使事情变得更加容易,包括可能与他人共享您的代码。
  • 根据github.com/google/vim-codefmt/issues/24,autopep8 似乎没有取得进展。所以要么选择黑色,yapf 作为你的格式化程序。我更喜欢使用 2 个空格作为缩进。仅仅是因为一些公司,比如谷歌有这种风格来节省一些空间。
  • 大家好。自从我开始使用 vscode 编写 python 代码以来,我一直在与这个错误作斗争。这对我来说很烦人。将"python.formatting.autopep8Args": ["--indent-size=2"] 放入settings.json 对我有用。谢谢。

标签: python visual-studio-code autopep8


【解决方案1】:

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

【讨论】:

  • 谢谢,现在我可以在等号前多写一些空格了。
【解决方案2】:

遇到了同样的问题,解决方法如下:

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

【讨论】:

  • 它可能又脏又易碎,但在以前的我不适合的情况下工作。谢谢!
猜你喜欢
  • 2018-04-20
  • 1970-01-01
  • 2021-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-22
  • 1970-01-01
相关资源
最近更新 更多