前往 文件 > 首选项 > 设置。在右侧添加以下行:
,"editor.trimAutoWhitespace": false
它对我来说完美地起作用了。
.diff
文件将其设置为假? - Eugen Konkov这是一个有点老的问题,但我发现结合以下设置:
"editor.trimAutoWhitespace": false,
"editor.renderWhitespace": "all"
...对我有用。
注意:(19/03/2021)
看起来这个在GitHub上注册的问题仍然是一个未解决的案例。
这是适用于我且即使在VSCODE格式化(linting)下也有效的解决方案:
VSCODE有两个本地设置会自动格式化你的代码:
只有当“editor.defaultFormatter”不为空时,这些设置才会影响文本编辑器。
在我的情况下,在编码时,我逐块在终端中测试我的代码。对于我来说,python的问题在于for循环和条件的结尾由缩进定义。在这种情况下,由于终端按行而不是按块运行代码,因此删除缩进后,终端认为for和if命令已经完成了。
如何做到这一点?
将VSCODE“editor.defaultFormatter”更改为null,如下所示:
"editor.defaultFormatter": null,
将语言格式化程序更改为首选格式。在我的情况下:
python.formatting.provider": "black"
VSCODE让您可以选择任何语言的格式化(linting)提供程序。这些提供程序的规则比VSCode本机规则要详细得多。在VS代码中按CRTL + SHIFT + P并搜索“首选项:配置特定于语言的设置...”。然后为该语言定义格式化提供程序。
规则E501 = 行超过80个字符。
规则W293 = 只包含空格的空行。
忽略W293会使自动修剪空格适用于除W293外的所有尾随空格。
时间戳:
2021年,使用VS Code v1.56.2
你使用了editor.action.trimTrailingWhitespace
。后来,你希望在一个函数中编写新代码。你导航到函数内的空白行,但是发现这一行没有缩进并且完全为空。在这种情况下,你有四个选择:
本答案通过为您插入缩进来自动化此工作流程(当您导航到被缩进行包围的空白行时)。
背景: 尝试了此页面上的所有解决方案(以及许多不同的扩展名),共花费了3个小时。找不到其他有效的方法。
implicit-indent
扩展名由 jemc
提供:
https://marketplace.visualstudio.com/items?itemName=jemc.vscode-implicit-indent
当导航到空行(如果其周围的行已缩进)时,自动为其缩进。
从实验中,这是implicit-indent
的工作方式:
Checks and matches either tab or space indentation automatically.
Determines spaces
or tabs
based on indentation of surrounding text, regardless of editor settings.[See Footnote 2]
Clicking on an empty line automatically indents to match surroundings.
If pressing the up ↑ or down ↓ arrow key navigates the caret (a.k.a. text cursor) to an empty line, implicit-indent
will automatically indent the line and place the cursor to the right of the indentation (making it feel the same as if the line were already indented).
-> Before ↑ or ↓ is pressed, it doesn't matter what column the caret is on, this extension will trigger regardless.
Navigating to an empty line matches nested indentation.
Assume you have the following:
Where |n| represents a line
and c represents the caret / text cursor
and only line |2| is empty.
|1| indented line
|2| (empty line)
|3| c indented line
^ assume caret is on line |3|
(caret can be at any column)
Pressing the up ↑ arrow key results in the following:
|1| indented line
|2| c
|3| indented line
^ Line |2| (previously empty)
is automatically indented to
match nested indentation
of line |3|
and the caret is automatically moved
to the end of the inserted whitespace
(as if the line were already indented).
截至2021年5月,以下GitHub问题仍未解决:
https://github.com/microsoft/vscode/issues/49661
https://github.com/microsoft/vscode/issues/54210
https://github.com/OmniSharp/omnisharp-vscode/issues/1980
https://github.com/OmniSharp/omnisharp-vscode/issues/1680
目前我发现唯一的解决方法是使用implicit-indent
。
当VS Code本身的自动缩进功能添加后,我将修改此答案。
[注1]
除了此扩展之外,您还可以使用Tab或VS Code内置的如下缩进/取消缩进功能手动缩进空行。虽然略微超出范围,但这是一个不错的热键。
默认内置快捷键为:
editor.action.indentLines
editor.action.outdentLines
[注2]
注意:无论您是否使用此扩展,都可以快速使用以下VS Code命令将当前文档的缩进替换为前导制表符或前导空格:
editor.action.indentationToTabs
editor.action.indentationToSpaces
我有同样的问题,但是在删除以下内容后问题得以解决:
"editor.autoIndent": "none"
我准备就绪。
我在编写Flutter代码时遇到了问题。
对我来说唯一的解决方案是将默认格式化程序更改为Flutter。
更新:我还需要禁用Dart:启用SDK格式化程序。
"no-trailing-spaces": ["error", { "skipBlankLines": false }],
我在我的eslintrc.json文件中设置了这个,所以在空白行上有空格或制表符时会出现错误。将"skipBlankLines"设置为true可能适用于您。
自VSC版本1.56.2起,答案已编辑。
命令editor.action.insertLineAfter
会创建一个新行并将光标移动到该行,保留缩进。
要将该命令绑定到Enter键,请转到您的键盘快捷键(按ctrl + k ctrl + s),然后按位于右上角的旋转箭头图标的页面。
将以下内容添加到keybindings.json文件中,使其如下所示:
// Place your key bindings in this file to override the defaults
[
{
"key": "enter",
"command": "editor.action.insertLineAfter",
"when": "editorTextFocus && !editorReadonly"
},
]
没有重新打开VSC,它对我起作用了。
editor.trimAutoWhitespace
和files.trimTrailingWhitespace
这两个设置是你正在寻找的? - Lasse V. Karlsen