我正在使用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 ++格式制作大括号?
答案 0 :(得分:43)
"{ BasedOnStyle: Google, IndentWidth: 4 }"
e.g。
"C_Cpp.clang_format_fallbackStyle": "{ BasedOnStyle: Google, IndentWidth: 4, ColumnLimit: 0}"
ColumnLimit: 0
也很有帮助,因为当您不需要时,谷歌限制会将您的代码分解为下一行。如果你想要更多:
答案 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)
其他答案是好的,但是仍然需要花费更多时间来弄清楚,因此编写以下答案:
步骤:
Ctrl + ,
C_Cpp.clang_format_fallbackStyle
您将看到Visual Studio
的值(或者,如果之前已更改过,则为其他值)
您可以使用以下选项之一复制粘贴,替换:
{ BasedOnStyle: LLVM, UseTab: Never, IndentWidth: 2, TabWidth: 2, BreakBeforeBraces: Attach, AllowShortIfStatementsOnASingleLine: false, IndentCaseLabels: false, ColumnLimit: 0, AccessModifierOffset: -2 }
{ BasedOnStyle: LLVM, UseTab: Never, IndentWidth: 2, TabWidth: 2, BreakBeforeBraces: Allman, AllowShortIfStatementsOnASingleLine: false, IndentCaseLabels: false, ColumnLimit: 0, AccessModifierOffset: -4 }
{ BasedOnStyle: LLVM, UseTab: Never, IndentWidth: 4, TabWidth: 4, BreakBeforeBraces: Allman, AllowShortIfStatementsOnASingleLine: false, IndentCaseLabels: false, ColumnLimit: 0, AccessModifierOffset: -4 }
{ BasedOnStyle: Google, IndentWidth: 4 }
LLVM
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 }"
注意:
有关c格式的更多详细信息:
答案 5 :(得分:1)
答案 6 :(得分:1)
按照下面的方法,其他答案不是完整的还是过时的。
按 Ctrl+,
打开设置:
搜索 C_Cpp: Clang_format_fallback Style
您将看到 Visual Studio
更多详细信息(您可以跳过此操作,请参见下文):
但是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
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#>代码样式>格式>新行
禁用“在类型的新行上放置大括号” /功能等...