格式化C++VSCode中不同行上的If else



我正在使用VSCode的C++扩展(Visual Studio代码(。

当我保存C++文件时,这种格式就是我的代码。但格式会导致if语句和大括号位于同一行,而不是位于新行。(我已经在同一行上设置了卷曲括号的格式(

C++VSCode格式化

if(...){
//...
}else if(...)
//...
}else{
//...
}

我想要C++VSCode格式化代码的样子

if(...){
//...
}
else if(...){
//...
}
else{
//...
}

如何在Visual Studio代码的不同行上用C++格式制作If else

您需要有C/C++扩展(只需检查是否有(。原始

第一个想法

  1. 转到文件->首选项->设置
  2. 搜索C_Cpp.lang_format_fallbackStyle
  3. 单击编辑,复制到设置
  4. 从";Visual Studio";至";{BasedOnStyle:Google,缩进宽度:4}">

(从"Visual Studio"更改为"LLVM"、"Google"或"WebKit"(

类似这样的东西:

"C_Cpp.clang_formal_fallbackStyle":"{BasedOnStyle:谷歌,缩进宽度:4,列限制:0}">

还要检查文档:这里和另一个

第二个想法

安装C#FixFormat扩展

View > Extension
Search "C# FixFormat"
Install

Shift+Alt+F

如果它抱怨有多个格式化程序,请按Configure按钮并选择C#FixFormat。

可以通过转到File>首选项>设置。然后向下滚动到Extensions,C#FixFormat配置并取消选中Style>支架:在同一条线上

VS代码扩展使用一个名为clang格式的程序来格式化代码。您可以通过在项目根目录中放置.clang-format文件并在VS Code的设置中仔细检查默认样式是否为"file"来更改clang格式的行为方式。设置为C_Cpp: Clang_format_style

这里有一个最小的.clang-format,它可以在clang格式允许的情况下尽可能接近您想要的输出。

BreakBeforeBraces: Stroustrup
IndentWidth:       4
SpaceBeforeParens: Never

它不能去除开场大括号之前的空格,但我个人支持clang format的决定。您自然会想仔细阅读文档,https://clang.llvm.org/docs/ClangFormatStyleOptions.html,查看所有可用选项。

我使用这种clang格式,它对我很有用:

{BasedOnStyle:LLVM,UseTab:Never,缩进宽度:4,TabWidth:4,AllowShortIfStatementsOnASingleLine:false,IndentCaseLabels:false,ColumnLimit:0,AccessModifierOffset:-4,NamespaceIndentation:All,FixNamespaceComments:false,BreakBeforeBraces:Custom,BraceWrappeng:{BeforeElse:true}}

解决问题的部分是";BreakBeforeBraces:Custom,BraceWrappeng:{BeforeElse:true}">

最新更新