VisualStudio:自动将制表符变成空格

use*_*428 14 tabs indentation visual-studio-code

奇怪的是谷歌没有给出这个问题的答案:

我正在使用 Visual Studio 1.56.0(用户设置),并且希望配置编辑器以在按 Tab 键时输入适当数量的空格,而不是插入物理制表符。

我发现了一些关于这个主题的讨论,我发现的建议包括使用以下之一:

工具->选项->文本编辑器->所有语言->选项卡

首选项 -> 源代码 -> 代码格式

编辑->高级->设置缩进->空格

这些解决方案都不起作用,因为

  • 我没有看到名为“工具”的菜单(我只有文件、编辑、选择、查看、执行、运行、终端和帮助)

  • 我在“文件”菜单下有一个“首选项”项目,但这又没有一个名为“源代码”的条目。

  • “编辑”菜单下没有“高级”项。

(对我来说)找到此类选项的逻辑位置是文件/首选项/文本编辑器/格式,但该部分中没有制表符 - >空格选项。

更新,基于 harrymc 给出的答案:

我知道 Visual Studio Code(我使用的)是与 Visual Studio 不同的文本编辑器。

有趣的是,指向“用户和工作空间设置”的链接显示的屏幕截图看起来与我的 Visual Studio 代码显示的不同:在网站中,“设置”应可用于“用户”或“工作空间”(该名称中有两个选项卡可见)那边的屏幕截图),而在我的编辑器中,“设置”页面仅显示“用户”。但是我不认为这与我的问题有关,因为当我在这些用户设置中选择“常用”并向下滚动时,我确实看到一个名为Editor: Insert Spaces的配置项及其描述

按 T​​ab 时插入空格

这应该正是我正在寻找的选择。但是,它确实设置了复选标记,但我的文件仍然有制表符。

我注意到在这个设置旁边我们可以找到注释:当“编辑器:检测缩进”打开时,此设置将根据文件内容被覆盖。事实上,“检测缩进”也有一个复选标记,我取消了它。

我以为这应该解决问题,但事实并非如此。重复一遍:我知道有

Detect Indentation:  unchecked
Insert Spaces:  checked
Run Code Online (Sandbox Code Playgroud)

我现在创建了一个新文件并键入了一个制表符和一些其他字符,然后保存了该文件。我可以看到新文件中还有一个物理选项卡。

har*_*ymc 14

您使用的是 Visual Studio Code,而不是 Visual Studio,这就是为什么您找到的建议不适合您。

帖子 “基本编辑:缩进 ”说:

VS Code 允许您控制文本缩进以及是否要使用空格或制表位。默认情况下,VS Code 会插入空格,并且每个 Tab 键使用 4 个空格。如果您想使用其他默认值,可以修改editor.insertSpaceseditor.tabSize设置。

"editor.insertSpaces": true,
"editor.tabSize": 4,
Run Code Online (Sandbox Code Playgroud)

如果未设置以下设置,有时按下选项卡时不会检测到选项卡:

 "editor.detectIndentation": true
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅 用户和工作区设置

请注意,一旦更改这些设置,现有文件不会自动转换,因为它们只会影响将来按 Tab 键。

用户 megamorf 的评论:

有时 VSCode 会保留当前打开文件的旧设置。在这种情况下,打开文件并在右下角单击Spaces并选择Convert Indentation to Spaces

  • 这是正确的答案。有时 VSCode 会保留当前打开文件的旧设置。在这种情况下,打开文件,然后在右下角单击“空格”,然后选择“将缩进转换为空格” (2认同)