如何将VSCode的缩进从默认的2个空格改为4个空格?

87
我在 VS Code 中应用了以下设置,以获取 4 个空格的缩进。但每当我打开一个新文件时,它总是会在右下角切换回 2 个空格。
如果我点击右下角并将设置改回 4,VSCode 仍然会改回 2,并使用 2 空格自动缩进。我错过了什么?

enter image description here


你正在使用哪个版本的VSCode? - HaaLeo
版本:1.21.0 - alebo611
1
在设置->工作区->扩展->Vetur中:TabSize = 4和Use Tabs = true。 请参阅此帖子的答案:https://dev59.com/GFoV5IYBdhLWcg3wc-Ym#54340064 - rjgodoy
6个回答

146

回答有些晚了,但我刚刚解决了相同的问题...

有多种方法可以控制这个问题。我进行了相当多的尝试才将其纠正。对我来说,以下第3点是最终的技巧,让它正常工作了。在那之前,我注意到编辑器加载时为4个空格,但会跳回2个空格。现在保持为4个空格。

需要检查的一些事项:

1:VS Code 配置(设置和工作区,可以为系统范围配置或仅限于当前工作区): 检查是否已设置:

"editor.tabSize": 4,
"editor.insertSpaces": true,
"editor.detectIndentation": false

还有语言特定的设置(可选):

"[javascript]": {
    "editor.tabSize": 4
},
"[typescript]": {
    "editor.tabSize": 4
}


2:是否有任何扩展程序可能会影响缩进 - 有人报告JS-CSS-HTML也可以配置该设置。


3:你的工作区中是否有.editorconfig文件?如果有,请检查那里的设置。例如,Angular会创建一个并配置indent_size:

# Editor configuration, see http://editorconfig.org
root = true

[*]
charset = utf-8
indent_style = space
indent_size = 4
insert_final_newline = true
trim_trailing_whitespace = true

[*.md]
max_line_length = off
trim_trailing_whitespace = false

大多数答案都集中在第一点,但对我来说,最后一步是使VS Code正常工作的重要步骤。

这个Stack Overflow在不同的答案中处理了上述所有问题: Visual Studio Code: format is not using indent settings


1
感谢更新。我的问题实际上是由于安装了所有的Angular插件,这些插件覆盖了配置文件。我现在关闭此问题。 - alebo611
21
我被 .editorconfig 搞得很头疼,感谢你结束了我的无头苍蝇追逐。 - Dagrooms
1
.editorconfig 对我来说是个问题,尤其是全局的 ~/.editorconfig 文件被用来代替项目中缺失的文件。 - carmat
1
添加另一个扩展程序Markdown All in One,用于覆盖Markdown文件的制表符缩进。您需要配置该扩展程序。 - Paul

57
我在VisualStudio的设置中修复了它(1.31版本)。
进入:设置 > 工作区设置 > 文本编辑器
取消选中“检测缩进”,以保持您的默认设置。
然后重新启动应用程序。

需要重新启动,但解决方案有效。 - undefined

11
在许多情况下,造成这种情况的是Prettier。实际上,它会忽略@Oskar答案中列出的所有设置。
因此,需要明确覆盖它:
"prettier.tabWidth": 4,
"prettier.useTabs": true

然后只需转到您的文件并按下CtrlkCtrld,正确的缩进应该会被应用。

另请参见Prettier is not indenting as specified


5
略有不同的答案。我有一个文件,其缩进方式与其类型不符,并且我只想更正该文件。
(如果您一定要知道:这个Python脚本最初是一个带有一些查询的文本文件。我从psql的-E \d回显中获取了它,查看了postgres模式)。
无论如何,这个文件现在是一个Python .py文件,缩进为2个空格。这不是通过修改通用的vscode设置来修复的东西。
我所做的:
- 单击底部状态栏上显示“2 Spaces”的位置 - 在弹出的对话框中选择“将缩进转换为制表符”。现在它显示“Tab size 2” - 再次单击状态栏,在其中显示Tab size 2 - 选择“将缩进转换为空格”。现在对话框更改为建议缩进大小:选择2。选择4或任何您想要的大小。 - 完成

enter image description here

基本上,有不同的方法可以通过此对话框进行操作,但如果您进入选项卡模式,然后切换回基于空格的缩进,它将允许您选择要使用的空格数量。


3

注意:这个扩展程序EditorConfig for VS Code会干扰 vscode 的标签和缩进设置。它虽然默认安装,但却是一个噩梦。禁用它将解决你所有的问题。


不,它不是在VS Code中默认安装的。您必须手动安装它。顺便说一下,在Visual Studio中解析.editorConfig不需要扩展程序。 - Jim Raynor
1
对��来说,当编辑器获得焦点时,实际的制表符大小会重置为4。禁用这个扩展实际上有所帮助。 :) 谢谢! - Сергей Червонос

0

我发现 Python 的另一个问题是 VS Code 使用 autopep8。无论我调整哪个设置,VS Code 似乎都会忽略 2 个空格的设置。如果你想要 2 个空格而不是 4 个空格 - 解决方法是将以下代码添加到你的 settings.json 文件中。

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

顺便提一下,您可以通过打开命令面板(在Mac上是⌘-shift-p)并输入>Python: Show Language Server Output来查看您的autopep8参数,然后切换到“Python”日志视图。

这似乎是一个常见问题。请参阅:VS Code Python autopep8 does not honor 2 spaces hanging indentation


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接