VSCode:在空行上保持缩进

Sta*_*sky 21 visual-studio-code

是否有可能使VSCode在空行上保持缩进?

无法在本地或"美化"扩展中找不到这样的设置.

期望行为的示例:

在此输入图像描述

更新:最终我刚刚切换到Prettier - 并且再也没有考虑过代码风格,因为它只是为我自动格式化.

小智 19

转到文件>首选项>设置.在右侧,添加以下行:

,"editor.trimAutoWhitespace": false
Run Code Online (Sandbox Code Playgroud)

它对我很有帮助.

  • 我不知道“在右侧”是什么意思。也许自 2018 年以来界面发生了变化?无论如何,我在搜索栏中输入了“editor.trimAutoWhitespace”,并能够通过单选按钮将其关闭。 (4认同)

Pau*_*aul 7

有点老问题了,但是我发现设置的组合:

"editor.trimAutoWhitespace": false,
"editor.renderWhitespace": "all"
Run Code Online (Sandbox Code Playgroud)

...为我工作。

  • 这有效,除非我格式化文档。格式化仍然认为我想摆脱空行中的空格。 (2认同)

Lui*_*S.L 6

截至:2022-02-01

即使打开 VSCODE 格式(linting),以下也是对我有用的解决方案:

有两个本机 VSCODE 设置可以自动格式化代码:

  1. “editor.formatOnSave”:true,
  2. “editor.formatOnType”:true,

仅当“editor.defaultFormatter”不为空时,这些设置才会影响您的文本编辑器

这是问题所在

  1. “editor.trimAutoWhitespace”VSCODE 设置可以解决该问题,但仅适用于“editor.formatOnType”自动格式,当您保存文档时,此设置将被忽略。
  2. 您可能还想在所有情况下修剪AutoWhitespaces,但在空行上留下缩进的情况除外。(这是我的情况)。

就我而言,在编码时,我在终端chunck 中测试我的代码。就我而言,Python 的问题是 for 循环和条件的结尾是通过缩进定义的。在这种情况下,由于终端逐行运行代码,而不是分块运行,并且删除了缩进,因此终端认为 for 和 if 命令在实际完成之前就已完成。

这是解决方案:

  1. 切勿在 VSCODE 设置中定义 edit.defaultFormatter,而是按语言定义它。

你是怎样做的?

  • 将 VSCODE "editor.defaultFormatter" 更改为 null,如下所示:
    "editor.defaultFormatter": null,

  • 将语言格式化程序更改为您喜欢的语言。就我而言:
    python.formatting.provider": "black"

VSCODE 使您可以为任何语言选择格式(linting)提供程序。这些提供程序的规则比 VSCode 原生规则更详细。在 VS code 中按 CRTL+SHIFT+P 并搜索“首选项:配置语言特定设置...”。然后为所述语言定义格式提供程序。

  1. 每个提供程序(在我的例子中为“黑色”)都提供忽略某种格式规则的选项。设置此提供程序的忽略参数。就我而言,我只忽略 2 条规则,我的设置是:
  • "python.formatting.blackArgs": [ "--ignore=E501,W293" ],

规则 E501 = 包含超过 80 个字符的行。

规则 W293 = 仅包含空格的空行。

忽略 W293 允许自动修剪空白继续处理每种尾随空白,W293 中提到的情况除外。