【问题标题】:Visual Studio Code: format is not using indent settingsVisual Studio Code:格式未使用缩进设置
【发布时间】:2016-07-15 02:11:30
【问题描述】:

在 Visual Studio Code 中使用 Format Code 命令时,它不支持我的缩进设置 ("editor.tabSize": 2)。它改为使用 4 的标签大小。任何想法为什么会发生这种情况?

谢谢!

【问题讨论】:

  • 哪种语言? Visual Studio Code 将格式化委托给语言格式化程序。一些格式化程序确实观察缩进设置。比如C#,由OmniSharp处理,应该使用omnisharp.json配置
  • 这花了我很长时间才弄清楚:我有一个 .cs 文件,其中包含混合制表符和空格缩进,并希望使用所有制表符对其进行格式化(b/c 大多数行都有制表符) .我用“格式文档”和“格式选择”尝试了各种设置值,但没有运气。最后我找到了“将缩进转换为制表符”操作(参见@Maleki 答案中的图片),这就是我想做的。 (我最近还发现了 ctrl-shift-p !...是的,我是 VS Code 的新手)
  • 格式保存应该是ON
  • 我的设置正确,只需要重新打开文件。
  • 我想要 4 而不是 2 :) 即使重新打开文件后它在我的 VSC 中也固定为 2

标签: visual-studio-code


【解决方案1】:

用于格式化的空格数取自不同的位置。我使用的是 1.0 版,这就是我为修复它所做的工作(我假设您使用的是空格而不是制表符):

在右侧编辑器底部点击“空格:#”:

然后顶部会出现一个菜单。选择“使用空格缩进”:

最后你可以选择你希望文件缩进多少个空格。

下次格式化文件时,您应该能够获得您配置的间距。

【讨论】:

  • 应用自动格式时不使用此设置(右键单击 -> 格式代码)。它总是使用 4 个空格。
  • 两者都需要 - 为工作区或编辑器(或两者)配置您的个人设置。新文件将拾取该设置并显示“2”,例如,根据这些屏幕截图在状态栏中。然后你可以自动格式化。对于现有文件,首先将工作区/编辑器设置为“使用制表符”或“使用空格”并设置空格数,然后您可以按照上述方法自动格式化现有文件。
  • 设置用户和工作区设置,在底部栏中设置,重新打开文件 - 仍然自动格式化使用 4 个空格...
  • 在设置用户和工作区默认值后必须退出并重新启动 vscode 以进行设置。直到那时它才停止尝试在我的 JS 文件上使用 4 个空格。
  • @Jared 我认为您正在使用JS-CSS-HTML 插件。在这种情况下,按F1 并选择格式化程序并在那里设置缩进。它似乎覆盖了上面讨论的所有选项。
【解决方案2】:

Visual Studio Code 默认检测当前缩进并使用它 - 忽略 .editorconfig

也将 "editor.detectIndentation" 设置为 false

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

【讨论】:

  • 如果发生这种情况,您可能在文件中存在不一致的缩进。我有一个带有标签的文件,除了几行有两个空格(谁知道为什么),最终被检测为使用标签,但标签大小为 2。
  • @isanae 我有 docker-compose.yaml,所有行都正确缩进了 2 个空格,但 VSCode 出于某种原因总是默认为 4 个空格(yaml 文件指定为在 ~/.config/Code/User/settings.json 中有 "editor.tabSize":2) .
【解决方案3】:

如果@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 工作区或用户设置中的任何内容。

【讨论】:

  • 我必须重新启动 VSCode 才能使更改在 IDE 中生效。
  • 在我的情况下,它实际上是由我的主文件夹中的 .editorconfig 文件引起的。不知何故,它使 VSCode 忽略任何工作区特定的设置。很烦人。
【解决方案4】:

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

打开您的设置,搜索“格式”并查看可能覆盖全局选项卡格式的相关插件设置。这对我有用;一旦我更新了 Vetur 选项卡设置以匹配我的偏好(在我的情况下为 4 大小的选项卡),格式化 .vue 文档开始正常工作:

【讨论】:

  • 没错,在我的情况下,我还需要在 Prettier 扩展的设置中设置标签大小。
  • 值得注意的是,SCSS Formatter 插件例如使用自己的设置,因此您必须转到Settings > Extensions > SCSS Formatter > Use Tabs 以强制它使用标签。
  • 我的格式化程序“更漂亮”,直到我深入研究 Prettier 的设置,我才能解决这个问题。很遗憾,Prettier 的设置不会出现在“标签”或“标签大小”的搜索中。
【解决方案5】:

就我自己而言,这个问题是由于使用了prettier VSCode 插件而在工作区中没有更漂亮的配置文件造成的。

禁用插件解决了这个问题。它也可能通过依赖更漂亮的配置来修复。

【讨论】:

  • 对我来说是“美化”插件。
  • 我在使用“Clang-Format”和“.clang-format”配置文件时遇到了同样的问题。
【解决方案6】:

下面的设置解决了我的问题

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

【讨论】:

  • 如果你只处理带有 2 个空格标签的文件,它就可以工作!
【解决方案7】:

您很可能安装了一些格式化扩展程序,例如JS-CSS-HTML Formatter.

如果是这种情况,那么只需打开命令面板,输入“格式化程序”并选择Formatter Config。然后根据需要编辑"indent_size" 的值。

附:编辑后不要忘记重新启动 Visual Studio Code :)

【讨论】:

    【解决方案8】:

    我遇到了类似的问题——无论我做什么,我都无法让 tabsize 保持在 2,即使它在我的用户设置中——这最终是由于 EditorConfig extension 造成的。它会在您当前的工作目录中查找.editorconfig 文件,如果找不到(或者它找到的文件未指定root=true),它将继续查找父目录,直到找到。

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

    【讨论】:

    • 是的,我的 .editor-config 也是由 nrwl 自动添加的。我已将其他所有内容设置为 4,但无法弄清楚。干杯!!
    【解决方案9】:

    如果您从谷歌来到这里是因为制表符没有缩进,这也可能是因为“制表符移动焦点”已打开。它位于右下角,如果您有足够大的显示器,尽管它被突出显示,但您可能会错过它。

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

    【讨论】:

      【解决方案10】:

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

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

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

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

      【讨论】:

        【解决方案11】:

        还要确保您的工作区设置没有覆盖您的用户设置。即使工作区设置胜过用户设置,用户界面也不会很清楚您正在编辑哪些设置,并且“文件 > 首选项 > 设置”默认为用户设置。

        您也可以直接编辑 Workspace 设置:/.vscode/settings.json

        【讨论】:

          【解决方案12】:

          正如一些答案所暗示的那样,有几个设置,如“detectIndentation、insertSpaces 和 tabSize”,它们都控制缩进的工作方式,但大多数人没有提到(包括最佳答案)是 这些设置可以被覆盖通过您的用户设置,在这种情况下更改它们并不重要。

          如果您想知道如何检查您的 vscode 是否属于这种情况,只需重新检查设置名称旁边的括号中是否写有以下内容:

          如果是这种情况,只需单击 User 链接并在新打开的用户设置选项卡中更改设置,您应该会看到更改生效。

          【讨论】:

            【解决方案13】:

            VSCode 插件 Vetur;用于 VueJS 应用程序的设置覆盖了我的设置。

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

            【讨论】:

              【解决方案14】:

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

              【讨论】:

                【解决方案15】:

                上述解决方案都不适合我,所以我在整个用户文件夹中搜索文件中的“tabSize”。最终我发现一个覆盖了我在“设置”中的设置并且总是被申请(新)打开的文件:

                "[python]": {
                    "editor.detectIndentation": false,
                    "editor.insertSpaces": true,
                    "editor.tabSize": 4
                },
                

                【讨论】:

                【解决方案16】:

                对于新查看者,我遇到了同样的 YAML 文件缩进不正确的问题。但您仍然可以在设置中更改此设置!

                • 转到文件>首选项>设置
                • 搜索“标签大小”
                • [yaml] 设置下,点击在settings.json 中编辑

                • editor.tabsize 值更改为您想要的空格数!


                仅供参考,他们似乎没有为特定文件类型添加设置:请参阅此处#58995

                【讨论】:

                  【解决方案17】:

                  如果您正在编写 C/C++ 代码:

                  1. 文件 > 首选项 > 设置或 [Ctrl+Shift+P]
                  2. 搜索“设置 UI”
                  3. 搜索“c_cpp 格式”
                  4. 将格式引擎从“clangFormat”更改为“vcFormat”

                  然后在“c_cpp>vc格式”下更改的所有内容都会被激活。

                  Screenshot

                  【讨论】:

                    【解决方案18】:

                    我在父目录(离子项目)中有一个“.editorconfig”文件,其值为“indent_size = 2”,它确实覆盖了我为工作区选择的任何值! 改了之后,问题就解决了。

                    【讨论】:

                      【解决方案19】:

                      auto-format/default-format 的解决方案:

                      您不必安装任何额外的东西。

                      转到 settings.json。根据下面的快照复制、粘贴和禁用

                      单击以下快照,放大/缩小(使用 ctrl + 鼠标滚轮)以适合您的屏幕尺寸。

                      完成。

                      注意:这里我想要的是自动格式化 JavaScript,就像我自动格式化 TypeScript 一样。您可以根据需要复制和粘贴任何其他规则。

                      至于Space SizeMaleki的第一个回答已经说的很清楚了。所以这里不再赘述。

                      【讨论】:

                        【解决方案20】:

                        我认为vscode默认使用autopep8格式化.py

                        "PEP 8 -- Style Guide for Python Code | Python.org"

                        根据这个网站,下面可以解释为什么vscode总是使用4个空格。

                        每个缩进级别使用 4 个空格。

                        【讨论】:

                          猜你喜欢
                          • 2022-08-10
                          • 2017-12-28
                          • 2019-01-14
                          • 2017-06-07
                          • 2021-11-06
                          • 2020-06-18
                          • 2020-03-30
                          • 2017-03-22
                          • 2015-09-17
                          相关资源
                          最近更新 更多