VSCode格式化代码,左大括号设置成“函数换行,其他不换行“

打开设置找到 “C_Cpp: Clang_format_style” 这项,填入以下代码:

{ BasedOnStyle: LLVM, UseTab: Never, IndentWidth: 4, TabWidth: 4, BreakBeforeBraces: Linux, AllowShortIfStatementsOnASingleLine: false, IndentCaseLabels: false, ColumnLimit: 0, AccessModifierOffset: -4, NamespaceIndentation: All, FixNamespaceComments: false }

这样就可以在原来的基础上,修改为函数的左大括号前换行,其他不换行。
下面是使用效果
在这里插入图片描述

以下是大概原理

格式化工具

安装了 “C/C++” 拓展后,VSCode会调用 " clang-format.exe " 来格式化代码,这个程序是 LLVM 项目提供的工具。所以设置格式化代码要通过设置这个软件的运行参数来实现。除了 “C_Cpp: Clang_format_style” 还有一项相关的设置项,叫"C_Cpp: Clang_format_fallback Style"。在前一个设置项出错时会应用后一个设置项。

设置中有叫 " C_Cpp › Vc Format › New Line" 的,之前我尝试修改相关的设置项,但并没有起作用。" Vc Format" 和 “Clang_format” 的关系我还没搞清楚,只知道要修改后者才能起作用。

Clang_format设置

在VSCode的设置项中有相关说明,可用参数可以分为三类:

  1.    用 ".clang-format" 文件指定样式,文件在当前目录或者父目录都可以
    
  2.    用几个默认样式
    
  3.    用参数指定样式
    

默认设置是先用文件指定,找不到文件后用 “Visual Studio” 样式,在说明中给出了该样式的参数。至于参数怎么设置,可以参考官网的文档,也可以参考简书上的这篇翻译文章。本文只说几点关键内容,详细内容自行查阅文档。

“.clang-format” 文件

该文件使用 YAML 格式,可以自己在文本文档中编写参数,再重命名。将重命名好的文件放到工作目录或者父目录就可以应用参数。

也可以生成完整参数的文件,自己再按需修改。找到 “clang-format.exe” 的路径,在系统环境变量的Path中添加该路径。之后用PowerShell运行以下代码:

clang-format -style=llvm -dump-config > .clang-format
生成的文件在 " C:\Windows\System32" 或者在用户文件夹。找不到程序或者生成文件的话,推荐用Everything搜索。

配置多语言

使用Language:参数来设置语言,文档中有支持的语言,以及怎么修改后缀对应的语言,本文不赘述。在Language:参数前面的参数会应用于所有语言,Language:参数后面的的参数会应用于相应语言,并覆盖前面的参数。所以可以通过设置这个参数,实现单独设置某个语言的样式。

基础样式

使用BasedOnStyle:参数来设置基础样式,可选样式请查阅文档。设置这个参数后就可以按照对应的样式来格式化代码,添加其他参数后,会覆盖这个样式的对应参数设置。从VSCode的说明中可以看到,“Visual Studio” 样式的基础样式是LLVM,之后是几个调整参数。在那几个参数中,有BreakBeforeBraces:这个参数,这个就是用来控制大括号换行的。

大括号的相关设置

使用BreakBeforeBraces:参数来设置大括号换行。可用字段可以分为三类:

  1.    大括号前不换行,以及衍生版本(在某些情况下换行)
    
  2.    大括号前换行,以及衍生版本(在某些情况下不换行)
    
  3.    自己定制
    

将参数设置为Linux即可实现函数的大括号换行,其他情况不换行。需要其他换行方式的话,请查阅文档。如果默认的几种方式不能满足需求的话,可以设置为BS_Custom,然后在设置BraceWrapping参数,具体设置方法请查阅文档。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值