Visual Studio代码:格式未使用缩进设置


143

Format Code在Visual Studio Code中使用命令时,它不遵循我的缩进设置("editor.tabSize": 2)。它使用的制表符大小为4。任何想法为什么会这样?

谢谢!


哪种语言?Visual Studio Code委托格式化为语言格式化程序。某些格式化程序确实遵守缩进设置。例如,由OmniSharp处理的C#,应使用omnisharp.json进行配置
Ian Yang,

这花了我很长时间才能弄清楚:我有一个.cs文件,其中包含多个制表符和空格缩进,并希望使用所有制表符对其进行格式化(b / c多数行都有制表符)。我用“格式文档”和“格式选择”尝试了各种设置值,但是没有运气。最终,我找到了“将缩进转换为制表符”操作(请参见@Maleki的答案中的图像),这就是我想要做的。(我最近还发现了ctrl-shift-p!...是的,我是VS Code的
新手

Answers:


228

用于格式化的空格数是从其他位置获取的。我正在使用1.0版,而这是我修复它所要做的(我假设您使用空格而不是制表符):

在右侧编辑器的底部,单击“空格:#”:

右侧的状态栏

然后,菜单将出现在顶部。选择“缩进使用空格”:

选择缩进类型

最后,您可以选择要缩进文件多少个空格。

选择标签大小

下次格式化文件时,应该可以获取配置的间距。


28
应用自动格式(右键单击->格式代码)时不使用此设置。它始终使用4个空格。
2016年

您需要两者-为工作空间或编辑器(或两者)配置个人设置。根据这些屏幕截图,新文件将采用该设置并在状态栏中显示“ 2”。然后,您可以自动格式化。对于现有文件,首先将工作空间/编辑器设置设置为“使用选项卡”或“使用空格”并设置空格数,然后可以执行上述方法来自动格式化现有文件。
rmcsharry16年

5
设置用户和工作区设置,将其设置在底部栏中,重新打开文件-自动格式化仍使用4个空格...
Jared 2016年

3
设置用户和工作区默认设置后,必须退出并重新启动vscode。只有这样,它才停止尝试在我的JS文件上使用4个空格。
John Pettitt

11
@Jared我认为您正在使用该JS-CSS-HTML插件。在这种情况下,按F1并选择formatter,然后在其中设置缩进。它似乎覆盖了上面讨论的所有选项。
阿提夫·穆罕默德·阿缅努丁

111

Visual Studio Code默认情况下会检测当前的缩进,并使用此缩进-忽略.editorconfig

还将“ editor.detectIndentation”设置 为false

(文件->首选项->设置)

屏幕截图


如果发生这种情况,则文件中的缩进可能不一致。我有一个标签到处文件除了几行有两个空格(谁知道为什么),它最终被检测为使用标签,但具有2的选项卡大小
isanae

49

如果@Maleki的答案对您不起作用,请检查并查看.editorconfig项目文件夹中是否有文件。

例如,Angular CLI生成一个带有如下所示新项目的项目

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

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

[*.md]
max_line_length = off
trim_trailing_whitespace = false

必须更改indent_size此处,因为它似乎会覆盖您的.vscode工作空间或用户设置中的所有内容。


5
为了使更改在IDE中生效,我必须重新启动VSCode。
JOpuckman

3
就我而言,这实际上是由.editorconfig我的主文件夹中的文件引起的。某种程度上,它使VSCode忽略了任何特定于Workspace的设置。很烦人。
xji

19

如果您使用的是插件(在我的案例中是Vetur,适用于vue.js),这些插件可能会设置自己的标签格式设置。

打开设置,搜索“格式”,然后浏览可能覆盖全局标签格式的相关插件设置。这对我有用;一旦我更新了Vetur标签设置以匹配我的偏好(在我的情况下为4尺寸标签),格式化.vue文档便开始正常工作:

在此处输入图片说明


没错,就我而言,我还需要在Prettier扩展程序的设置中设置标签大小。
tonix

值得注意的是,该SCSS Formatter插件使用了自己的设置,因此,例如,您必须Settings > Extensions > SCSS Formatter > Use Tabs强制其使用选项卡。
SmartyP

13

就我自己而言,此问题是由使用 prettier VSCode插件而在工作区中没有更漂亮的配置文件引起的。

禁用插件解决了该问题。可能还可以通过更漂亮的配置来修复它。


1
对我来说,这是“美化”插件。
马修·史密斯

我对“ Clang格式”和“ .clang格式”配置文件有相同的问题。
repkap11


6

以下设置解决了我的问题

  "editor.detectIndentation": false,
  "editor.insertSpaces": false,
  "editor.tabSize": 2,

如果您仅处理带有2个空格标签的文件,它就可以工作!
Dominux

2

如果您是因为制表符不缩进而从Google来的,那也可能是因为“制表符移动焦点”已启用。它在右下角,如果您有足够大的显示器,则尽管突出显示了它也可能会错过它。

在此处输入图片说明

单击绿色区域或按Ctrl + M使其停止。我不确定它是否可以完全禁用,然后我又不知道为什么代码编辑器想弄乱缩进之类的东西。


2

我有一个类似的问题-无论我做什么,尽管它在我的用户设置中,我都无法使tabsize固定为2-最终是由于EditorConfig扩展。它会.editorconfig在您当前的工作目录中查找文件,如果找不到一个文件(或者找到的文件未指定root=true),它将继续查找父目录,直到找到一个。

原来,我.editorconfig在所有新代码项目都放在dir的父目录中,并且它的tabSize指定为4。删除该文件解决了我的问题。


1

我有时也会遇到同样的问题。VSCode会突然失去理智,完全忽略我告诉它的任何缩进设置,即使它整天一直缩进同一文件也是如此。

我已经editor.tabSize设置为2(以及editor.formatOnSave设置为true)。当VSCode弄乱文件时,我使用编辑器底部的选项来更改缩进类型和大小,希望能起作用,但是VSCode坚持实际使用4的缩进大小。

解决办法?重新启动VSCode。它应该返回缩进状态,显示出错误(在我的情况下为4)。对我来说,我必须更改设置,然后保存以进行实际更改,但这可能是因为我editor.formatOnSave设置。

我还没有弄清楚为什么会发生这种情况,但是对我来说,通常是在编辑JS文件中的嵌套对象时。即使我已经在该文件中工作了一段时间并且它一直在进行缩进,它也会突然在对象内执行非常奇怪的缩进。


0

VSCode插件Vetur; 用于VueJS应用程序的设置对我来说是最重要的。

将vetur.format.options.tabSize设置为我喜欢的空格数使其生效。



-1

禁用所有插件(然后启用一个并验证)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.