C ++ VSCode中同一行上的格式大括号

时间:2017-09-08 08:18:49

标签: c++ format visual-studio-code curly-braces

我正在使用C++ Extension用于VSCode (Visual Studio代码)

目前,我将"C_Cpp.clang_format_formatOnSave"设置为true

这种格式是我保存C ++文件时的代码。但是这种格式会在新行上产生花括号,而不是在同一行上。

当前C ++ VSCode格式化

for (int i = 0; i < 10; i++)
{
    // ...
}

我希望C ++ VSCode格式化代码看起来像

for (int i = 0; i < 10; i++) {
    // ...
}

我也editor.wrappingIndent设置为"same"

如何在Visual Studio Code中的同一行上以C ++格式制作大括号?

9 个答案:

答案 0 :(得分:43)

  1. Go File - &gt;偏好 - &gt;设置
  2. 搜索C_Cpp.clang_format_fallbackStyle
  3. 点击修改,复制到设置
  4. 从&#34; Visual Studio&#34;更改到"{ BasedOnStyle: Google, IndentWidth: 4 }"
  5. e.g。

    • "C_Cpp.clang_format_fallbackStyle": "{ BasedOnStyle: Google, IndentWidth: 4, ColumnLimit: 0}"
    • btw ColumnLimit: 0也很有帮助,因为当您不需要时,谷歌限制会将您的代码分解为下一行。

    如果你想要更多:

    https://stackoverflow.com/a/50489812/2613194

答案 1 :(得分:18)

clang-format是一个用于格式化C / C ++代码的独立工具。虽然您可以选择使用C_Cpp.clang_format_path选项在计算机上指定自己安装的clang-format版本的路径,但C/C++ extension附带了它。

默认情况下,clang格式样式源(C_Cpp.clang_format_style)设置为file,该文件读入.clang-format文件。有关可用样式选项的详细信息,请参阅this page

否则,您可能正在寻找的最简单方法是更改​​选项C_Cpp.clang_format_fallbackStyle

您正在寻找的风格可能是WebKit

因此,您的.vscode/settings.json文件应如下所示:

{
    "C_Cpp.clang_format_fallbackStyle": "WebKit"
}

答案 2 :(得分:4)

我知道这里已经有很多答案了,但这里有另一种方法,这是不同的。将以下 json 插入到您的设置文件中,或者转到设置并将 Patient Visit Test Sample 1 V1 Test 1 A 1 V1 Test 1 B 1 V2 Test 1 A 1 V2 Test 1 B 1 V2 Test 2 A 1 V2 Test 2 B ... 2 V2 Test 2 A 2 V2 Test 2 B 设置为格式化程序,并将 vcFormat 设置更改为 newLine.beforeOpenBrace

sameLine

这有效,而不会显着改变其他区域的代码格式。

答案 3 :(得分:2)

实际的clang格式选项为:

BreakBeforeBraces: Attach

答案 4 :(得分:2)

其他答案是好的,但是仍然需要花费更多时间来弄清楚,因此编写以下答案:


步骤:

  1. 打开Visual Studio代码
  2. Ctrl + ,
  3. 搜索C_Cpp.clang_format_fallbackStyle

您将看到Visual Studio的值(或者,如果之前已更改过,则为其他值)


您可以使用以下选项之一复制粘贴,替换:

  1. { BasedOnStyle: LLVM, UseTab: Never, IndentWidth: 2, TabWidth: 2, BreakBeforeBraces: Attach, AllowShortIfStatementsOnASingleLine: false, IndentCaseLabels: false, ColumnLimit: 0, AccessModifierOffset: -2 }
  2. { BasedOnStyle: LLVM, UseTab: Never, IndentWidth: 2, TabWidth: 2, BreakBeforeBraces: Allman, AllowShortIfStatementsOnASingleLine: false, IndentCaseLabels: false, ColumnLimit: 0, AccessModifierOffset: -4 }
  3. { BasedOnStyle: LLVM, UseTab: Never, IndentWidth: 4, TabWidth: 4, BreakBeforeBraces: Allman, AllowShortIfStatementsOnASingleLine: false, IndentCaseLabels: false, ColumnLimit: 0, AccessModifierOffset: -4 }
  4. { BasedOnStyle: Google, IndentWidth: 4 }
  5. LLVM
  6. WebKit

我正在使用上面列表中的1st one,非常适合我的需求。


要恢复到之前的状态,请执行与上述相同的步骤,然后复制粘贴,然后替换以下内容:

  • Visual Studio

您也可以将上述值直接复制到\.vscode\settings.json文件中,例如下面的行:

  • "C_Cpp.clang_format_fallbackStyle": "{ BasedOnStyle: LLVM, UseTab: Never, IndentWidth: 2, TabWidth: 2, BreakBeforeBraces: Attach, AllowShortIfStatementsOnASingleLine: true, IndentCaseLabels: false, ColumnLimit: 0, AccessModifierOffset: -2 }"

注意:

  • 由于这是JSON,所以请不要忘记在上一行的末尾或上一行之前有一个逗号,具体取决于您之前/之后的行。

有关c格式的更多详细信息:

答案 5 :(得分:1)

我注意到当前接受的答案不再起作用。在最新版本(1.32.3)中,只需使用Ctrl+,打开设置,然后搜索c fallback

enter image description here

将上述值从默认值更改为LLVM,您应该就可以了!

答案 6 :(得分:1)

按照下面的方法,其他答案不是完整的还是过时的。

  1. Ctrl+, 打开设置:

  2. 搜索 C_Cpp: Clang_format_fallback Style 您将看到 Visual Studio

  3. 的值

更多详细信息(您可以跳过此操作,请参见下文):

但是Visual Studio的值
 和
一样 { BasedOnStyle: LLVM, UseTab: Never, IndentWidth: 4, TabWidth: 4, BreakBeforeBraces: Allman, AllowShortIfStatementsOnASingleLine: false, IndentCaseLabels: false, ColumnLimit: 0, AccessModifierOffset: -4 }

但是,我们需要在这里更改一件事,我们不想在大括号之前中断(例如:if,for等),因此我们需要进行以下更改:
来自:BreakBeforeBraces: Allman
BreakBeforeBraces: Attach


  1. 因此,请从 Visual Studio
    进行更改 到: { BasedOnStyle: LLVM, UseTab: Never, IndentWidth: 4, TabWidth: 4, BreakBeforeBraces: Attach, AllowShortIfStatementsOnASingleLine: false, IndentCaseLabels: false, ColumnLimit: 0, AccessModifierOffset: -4 }

希望有帮助。

答案 7 :(得分:1)

对于Visual Studio 2019(在Google中搜索vs2019给出了此页面),您可以这样做:

工具>选项>文本编辑器> C / C ++>格式>常规>默认 格式样式

一种快速的方法是选择Google,您将获得所需的结果。 我认为它可能会抹掉您已实施的其他自定义设置,因此请注意。

如果您有时间研究如何做的话,您还可以在其中自定义clang格式的文件选项。

答案 8 :(得分:-1)

对于2019年的C#:

选项>文本编辑器> C#>代码样式>格式>新行

禁用“在类型的新行上放置大括号” /功能等...