如何在 VSCode 中的 switch-case 语句中自动缩进?

Man*_*gor 4 c c++ visual-studio-code

有点令人沮丧的是,vscode 会自动执行很多操作,但是当使用 switch-case 语句时,它不会在冒号后自动缩进。这就是如果我不受干扰地打字的话我会得到的结果

int x = 32;
switch (x){
    case 33:
    break;
    case 32:
    break;
    default:
}
Run Code Online (Sandbox Code Playgroud)

这就是我想看到的

int x = 32;
switch (x){
    case 33:
        break;
    case 32:
        break;
    default:
}
Run Code Online (Sandbox Code Playgroud)

dfr*_*fri 6

Clang Format 可自定义格式规则

对于任何 C++ 格式化需求,我建议使用Clang Format,它可以无缝集成到 VS Code 中。

在您的示例中,您可以使用IndentCaseLabels 样式选项

缩进大小写标签(布尔)

缩进大小写标记 switch 语句的一级。

当 时false,使用与 switch 语句相同的缩进级别。Switch 语句主体始终比 case 标签缩进一级(case 标签后面的第一个块除外,它本身会缩进代码 - 除非启用了 IndentCaseBlocks)。

false:                                 true:
switch (fool) {                vs.     switch (fool) {
case 1:                                  case 1:
  bar();                                   bar();
  break;                                   break;
default:                                 default:
  plop();                                  plop();
}                                      }
Run Code Online (Sandbox Code Playgroud)

应用于您的示例:

//  IndentCaseLabels: true
int x = 32;
switch (x) {
  case 33:
    void();
    break;
  case 32:
    break;
  default:
}

//  IndentCaseLabels: false
int x = 32;
switch (x) {
case 33:
  void();
  break;
case 32:
  break;
default:
}
Run Code Online (Sandbox Code Playgroud)

将 Clang 格式集成到 VS Code 中

从 VS Code 文档中引用在 Visual Studio Code 中编辑 C++ [重点是我的]:

[...]

代码格式化

Visual Studio Code 的 C/C++ 扩展支持使用扩展中包含的clang-format源代码格式化。

您可以使用“设置文档格式”(Ctrl+Shift+I) 来格式化整个文件,也可以使用右键单击上下文菜单中的“设置所选内容格式”(Ctrl+K Ctrl+F) 来格式化当前所选内容。您还可以使用以下设置来配置自动格式化:

  • editor.formatOnSave-保存文件时进行格式化
  • editor.formatOnType- 在您键入时格式化(在;字符上触发)。

默认情况下,clang-format 样式设置为“file”,这意味着它会在您的工作区中查找.clang-format文件。如果.clang-format找到该文件,则会根据文件中指定的设置应用格式设置。如果.clang-format在工作区中找不到文件,则会根据C_Cpp.clang_format_fallbackStyle设置中指定的默认样式应用格式设置。目前,默认格式化样式是“Visual Studio”,它是 Visual Studio 中默认代码格式化程序的近似值。

[...]