ubuntu下VScode使用Clang-Format进行代码格式化

2023-05-16

1、安装 Clang-Format

在vscode中安装 Clang-Format插件

在这里插入图片描述

2、在系统中安装Clang-Format

sudo apt-get install clang-format

3、生成Clang-Format文件

// 格式名可选:LLVM, Google, Chromium, Mozilla, WebKit。
clang-format -style=格式名 -dump-config > .clang-format

一个Google标准的文件,放到.clang-format中,并把 .clang-format文件放到项目中
在这里插入图片描述

---
Language:        Cpp
# BasedOnStyle:  Google # 基于Google样式指南
# 访问修饰符(public, private, protected)相对于基本缩进的偏移量
AccessModifierOffset: -1 
# 对齐括号后的参数列表
AlignAfterOpenBracket: Align
# 不对齐连续的宏定义
AlignConsecutiveMacros: false 
# 不对齐连续的赋值语句
AlignConsecutiveAssignments: false 
# 不对齐连续的声明语句
AlignConsecutiveDeclarations: false 
# 对齐反斜杠换行的连续行
AlignEscapedNewlines: Left 
# 对齐运算符两侧的操作数
AlignOperands:   true 
# 对齐尾随注释
AlignTrailingComments: true 
# 允许所有参数在下一行
AllowAllArgumentsOnNextLine: true 
# 允许所有构造函数初始化列表在下一行
AllowAllConstructorInitializersOnNextLine: true 
# 允许所有声明的参数在下一行
AllowAllParametersOfDeclarationOnNextLine: true 
# 不允许将短的代码块放在单行
AllowShortBlocksOnASingleLine: Never
# 不允许将短的case标签放在单行
AllowShortCaseLabelsOnASingleLine: false 
# 允许将所有短函数放在单行
AllowShortFunctionsOnASingleLine: All 
# 允许将所有短Lambda表达式放在单行
AllowShortLambdasOnASingleLine: All 
# 允许将没有else的短if语句放在单行
AllowShortIfStatementsOnASingleLine: WithoutElse 
# 允许将短循环放在单行
AllowShortLoopsOnASingleLine: true 
# 在定义返回类型后不强制换行
AlwaysBreakAfterDefinitionReturnType: None 
# 在返回类型后不强制换行
AlwaysBreakAfterReturnType: None 
# 在多行字符串之前始终换行
AlwaysBreakBeforeMultilineStrings: true 
# 总是在模板声明处换行
AlwaysBreakTemplateDeclarations: Yes 
# 将函数调用的参数尽可能多地放在同一行
BinPackArguments: true 
# 将函数声明的参数尽可能多地放在同一行
BinPackParameters: true 

# 大括号换行设置
BraceWrapping:
  # case标签后的大括号不另起一行 
  AfterCaseLabel:  true 
  # 类声明后的大括号不另起一行
  AfterClass:  true
  # 控制语句后的大括号不另起一行
  AfterControlStatement: true 
  # 枚举声明后的大括号不另起一行
  AfterEnum:       true 
  # 函数声明后的大括号不另起一行
  AfterFunction:   true 
  # 命名空间声明后的大括号不另起一行
  AfterNamespace:  true 
  # Objective-C声明后的大括号不另起一行
  AfterObjCDeclaration: true 
  # 结构体声明后的大括号不另起一行
  AfterStruct:     true 
  # union声明后的大括号不另起一行
  AfterUnion:      true 
  # 外部块声明后的大括号不另起一行
  AfterExternBlock: true 
  # catch关键字前的大括号不另起一行
  BeforeCatch:     true 
  # else关键字前的大括号不另起一行
  BeforeElse:      true 
  # 不对大括号进行缩进
  IndentBraces:    false 
  # 空函数的大括号分开
  SplitEmptyFunction: true 
  # 空记录(类、结构体、联合体)的大括号分开
  SplitEmptyRecord: true 
  # 空命名空间的大括号分开
  SplitEmptyNamespace: true 
# 二元操作符前不换行
BreakBeforeBinaryOperators: None 
# 大括号附加在控制语句、函数等同一行

# 在大括号前换行: Attach(始终将大括号附加到周围的上下文), Linux(除函数、命名空间和类定义,与Attach类似), 
#   Mozilla(除枚举、函数、记录定义,与Attach类似), Stroustrup(除函数定义、catch、else,与Attach类似), 
#   Allman(总是在大括号前换行), GNU(总是在大括号前换行,并对于控制语句的大括号增加额外的缩进), WebKit(在函数前换行), Custom
#   注:这里认为语句块也属于函数
BreakBeforeBraces: Custom 
# 继承列表中的逗号前不换行
BreakBeforeInheritanceComma: false 
# 继承列表在冒号前换行
BreakInheritanceList: BeforeColon 
# 三元操作符前换行
BreakBeforeTernaryOperators: true 
# 构造函数初始化列表中的逗号前不换行
BreakConstructorInitializersBeforeComma: false 
# 构造函数初始化列表在冒号前换行
BreakConstructorInitializers: BeforeColon 
# Java字段注解后不换行
BreakAfterJavaFieldAnnotations: false 
# 字符串字面量在需要时换行
BreakStringLiterals: true 
# 每行最大字符数限制为80
ColumnLimit:     80 
# 特定注释格式的正则表达式匹配
CommentPragmas:  '^ IWYU pragma:' 
# 命名空间内容不紧凑排列
CompactNamespaces: false 
# 构造函数初始化列表要么全部在一行,要么每个成员一行
ConstructorInitializerAllOnOneLineOrOnePerLine: true 
# 构造函数初始化列表的缩进宽度为4个空格
ConstructorInitializerIndentWidth: 4 
# 换行后的续行缩进宽度为4个
ContinuationIndentWidth: 4 

# 使用C++11风格的花括号列表格式,即在初始化列表中,每个元素后都跟一个逗号
Cpp11BracedListStyle: true 
# 自动推断换行符风格,如Windows(\r\n)或Unix(\n)等
DeriveLineEnding: true 
# 自动推断指针对齐风格,如左对齐(Type *var)或右对齐(Type* var)等
DerivePointerAlignment: true 
# 不禁用格式化,即允许格式化操作
DisableFormat: false 
# 不使用实验性的自动检测二进制打包功能。这个选项仅用于尝试自动检测是否启用二进制参数包装
ExperimentalAutoDetectBinPacking: false 
# 修复命名空间注释,使其与命名空间对齐并以一致的风格显示
FixNamespaceComments: true 
# 自定义支持的foreach宏,这些宏将被识别为循环并进行适当的缩进
ForEachMacros: 
  - foreach
  - Q_FOREACH
  - BOOST_FOREACH
# 将#include指令按分类重新组织。在这种模式下,相同类别的#include指令将聚集在一起,并用空行分隔
IncludeBlocks: Regroup 

# 指定#include指令的分类和排序优先级,使用正则表达式匹配。
IncludeCategories: 
  - Regex:           '^<ext/.*\.h>'
    Priority:        2
    SortPriority:    0
  - Regex:           '^<.*\.h>'
    Priority:        1
    SortPriority:    0
  - Regex:           '^<.*'
    Priority:        2
    SortPriority:    0
  - Regex:           '.*'
    Priority:        3
    SortPriority:    0
# 指定main文件的正则表达式,用于确定文件中是否包含主要的#include指令
IncludeIsMainRegex: '([-_](test|unittest))?$' 
# 指定main源文件的正则表达式。当未指定时,使用IncludeIsMainRegex匹配
IncludeIsMainSourceRegex: '' 
# 缩进case标签,使其与所属的switch语句内部代码对齐
IndentCaseLabels: true 
# 缩进goto标签,使其与所属的控制流程代码对齐
IndentGotoLabels: true 
# 预处理器指令不缩进
IndentPPDirectives: None
# 缩进宽度为2个空格
IndentWidth: 2 
# 不缩进换行后的函数名
IndentWrappedFunctionNames: false 
# 保留JavaScript中的引号风格(单引号或双引号)
JavaScriptQuotes: Leave 
# 将JavaScript导入语句换行
JavaScriptWrapImports: true 
# 在块的开始处不保留空行
KeepEmptyLinesAtTheStartOfBlocks: false 


# 定义用于标记宏块开始的字符串。为空时,不使用宏块特性
MacroBlockBegin: '' 
# 定义用于标记宏块结束的字符串。为空时,不使用宏块特性
MacroBlockEnd:   '' 
# 保留的最大连续空行数为1
MaxEmptyLinesToKeep: 1 
# 命名空间内部的内容不进行缩进
NamespaceIndentation: None 
# Objective-C协议列表不进行二进制打包
ObjCBinPackProtocolList: Never 
# Objective-C块的缩进宽度为2个空格
ObjCBlockIndentWidth: 2 
# Objective-C属性后不添加空格
ObjCSpaceAfterProperty: false 
# Objective-C协议列表前添加空格
ObjCSpaceBeforeProtocolList: true 
# 赋值操作符换行的惩罚值为2
PenaltyBreakAssignment: 2 
# 函数调用参数列表的第一个参数前换行的惩罚值为1
PenaltyBreakBeforeFirstCallParameter: 1 
# 注释换行的惩罚值为300
PenaltyBreakComment: 300 
# 在C++的左移操作符(<<)前换行的惩罚值为120
PenaltyBreakFirstLessLess: 120 
# 字符串换行的惩罚值为1000
PenaltyBreakString: 1000 
# 模板声明换行的惩罚值为10
PenaltyBreakTemplateDeclaration: 10 
# 每个超出列限制的字符的惩罚值为1000000
PenaltyExcessCharacter: 1000000 
# 返回类型独占一行的惩罚值为200
PenaltyReturnTypeOnItsOwnLine: 200 
# 指针对齐方式为左对齐,即“Type *var”
PointerAlignment: Left 

# 原始字符串格式设置,用于不同语言和定界符
RawStringFormats: 
  - Language:        Cpp
    Delimiters:
      - cc
      - CC
      - cpp
      - Cpp
      - CPP
      - 'c++'
      - 'C++'
    CanonicalDelimiter: '' # 规范定界符为空字符串。
    BasedOnStyle:    google # 基于Google样式指南。

  - Language:        TextProto
    Delimiters:
      - pb
      - PB
      - proto
      - PROTO
    EnclosingFunctions: # 包含原始字符串的函数列表。
      - EqualsProto
      - EquivToProto
      - PARSE_PARTIAL_TEXT_PROTO
      - PARSE_TEST_PROTO
      - PARSE_TEXT_PROTO
      - ParseTextOrDie
      - ParseTextProtoOrDie
    CanonicalDelimiter: '' # 规范定界符为空字符串。
    BasedOnStyle:    google # 基于Google样式指南。
# 重新排列注释以适应列限制
ReflowComments:  true 
# 对#include指令进行排序
SortIncludes:    true 
# 对using声明进行排序
SortUsingDeclarations: true 
# C风格类型转换后不添加空格
SpaceAfterCStyleCast: false 
# 逻辑非操作符后不添加空格
SpaceAfterLogicalNot: false 
# 模板关键字后添加空格
SpaceAfterTemplateKeyword: true 
# 赋值操作符前添加空格
SpaceBeforeAssignmentOperators: true 
# C++11花括号列表前不添加空格
SpaceBeforeCpp11BracedList: false 
# 构造函数初始化列表的冒号前添加空格
SpaceBeforeCtorInitializerColon: true 
# 继承列表的冒号前添加空格
SpaceBeforeInheritanceColon: true 
# 控制语句的圆括号前添加空格
SpaceBeforeParens: ControlStatements 
# 基于范围的for循环的冒号前添加空格
SpaceBeforeRangeBasedForLoopColon: true
# 空块中不添加空格
SpaceInEmptyBlock: false 
# 空圆括号中不添加空格
SpaceInEmptyParentheses: false 
# 尾部注释前添加2个空格
SpacesBeforeTrailingComments: 2 
# 尖括号中不添加空格
SpacesInAngles:  false 
# 条件语句中不添加空格
SpacesInConditionalStatement: false 
# 容器字面量中添加空格
SpacesInContainerLiterals: true 
# C风格类型转换的圆括号中不添加空格
SpacesInCStyleCastParentheses: false 
# 圆括号中不添加空格
SpacesInParentheses: false 
# 方括号中不添加空格
SpacesInSquareBrackets: false 
# 方括号前不添加空格
SpaceBeforeSquareBrackets: false 
# 自动检测使用的C++标准(如C++11、C++14等)
Standard:        Auto 
# 语句宏列表,这些宏将被视为单个语句并进行适当的缩进
StatementMacros:
  - Q_UNUSED
  - QT_REQUIRE_VERSION
# 制表符宽度为8个空格
TabWidth:        8 
# 使用Unix风格的换行符(\n),而非Windows风格的换行符(\r\n)
UseCRLF:         false 
# 永远不使用制表符进行缩进
UseTab:          Never 

4、启用

ctrl+shift+i

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ubuntu下VScode使用Clang-Format进行代码格式化 的相关文章

随机推荐

  • 【嵌入式】stm32程序跳转实验

    嵌入式 stm32程序跳转实验 菜老越 于 2019 04 23 17 54 56 发布 2888 收藏 22 分类专栏 xff1a 嵌入式 文章标签 xff1a keil stm32 程序跳转 IAP BootLoader 版权 嵌入式
  • C++/C语言实现HTTP的GET和POST请求

    阅读目录 HTTP请求和IP TCP 实现GET请求 实现POST请求 xff1a 参考 xff1a 回到顶部 HTTP请求和IP TCP 所谓的HTTP协议是基于IP TCP协议的 xff0c 所以要获取远端的html数据只要创建sock
  • C++ 简单实现HTTP GET/POST 请求

    HTTP 超文本传输协议 是一种客户端与服务端的传输协议 xff0c 最早用于浏览器和服务器之间的通信 xff0c 后来因为其使用灵活 方便等特点 xff0c 广泛用于客户端与服务端的通信 文章将简单介绍HTTP协议 xff0c 同时以C
  • 分布式系统架构简单介绍

    目录 xff1a 一 什么是分布式系统 xff1f 二 为什么要走分布式系统架构 xff1f 三 系统如何进行拆分 xff1f 四 分布式之后带来的技术挑战 xff1f 一 什么是分布式系统 xff1f 在谈分布式系统架构前 xff0c 我
  • 使用javascript实现对于chineseocr的API调用

    ChineseOCR在线API 网页地址 界面 提供多种接口调用方式 xff0c 比如在线调用 Javascript api调用 curl api调用和python api调用四种方式 xff0c 本次使用javascript api调用的
  • Qt-QMessageBox用法详解

    QMessageBox 是 Qt 框架中常用的一个类 xff0c 可以生成各式各样 各种用途的消息对话框 xff0c 如图 1 所示 图 1 QMessageBox消息对话框 很多 GUI 程序都会用到消息对话框 xff0c 且很多场景中使
  • C++中UDP通讯详解

    C 43 43 Socket编程及TCP UDP通信代码实现 一 简介 Socket编程的目的是使网络的进程进行通信 xff0c 基于TCP IP协议簇 xff0c 通过三元组 xff08 ip地址 协议 端口 xff09 标志进程 xff
  • sphinx写文档的简单尝试--index.rst的内容分析

    先说简单的结论 xff0c rst上手难度远高于markdown 功能扩展完爆markdown 在安装sphinx后 xff0c 开始编写shpinx的第一步 xff0c 就是使用sphinx quickstart来生成配置文件 我的目录结
  • 读书笔记:嵌入式常用算法_note_1

    目录 折线插值 抛物线插值 折线插值 include lt stdio h gt define N 10 折线由10段线段组成 即有11个插值节点 float w 61 10 0 插值节点间隔为10 0 即 w 61 y1 y0 61 10
  • Linux下免费git工具集合

    该博文来自于ieayoio的博客 xff1a http www ieayoio com win和mac下的git图形工具都有挺多的 xff0c 然而对于因git而生的Linux xff0c git的图形工具普遍被认为相当落后 xff0c 然
  • [rospack] Error: package ‘.....‘ not found

    在ros编程中如果报出 rospack Error package 39 39 not found 某个包没有找到 xff0c 则有一下几方面的原因 1 包名写错了2 工作空间真的没有这个包存在3 包所在的ros工作空间没有在ros环境中
  • Pytorch中TypeError: 'DataLoader' object is not subscriptable错误

    今天学习pytorch遇到以下问题 TypeError 39 DataLoader 39 object is not subscriptable 一开始设置的参数如下 cifar train 61 DataLoader cifar trai
  • undefined reference to `vtable for fmt::v7::format_error‘

    在使用eigen3和sophus 库时 xff0c 如遇到以下错误 undefined reference to 96 vtable for fmt v7 format error 39 undefined reference to 96
  • 什么是嵌入式软件工程师?需具备哪些能力?

    计算机嵌入式逐渐被大家认可 xff0c 然而嵌入式软件工程师到底是什么 做一个好的嵌入式软件工程师又需要具备哪些能力呢 今天尚观教育小编跟大家聊一聊 1 嵌入式软件工程师是什么 嵌入式系统一般由嵌入式微处理器 外围硬件设备 嵌入式操作系统以
  • STM32串口中断接收到的16进制数据如何判断

    最近用到了一款WIFI摄像头 xff0c 这款摄像头可以通过手机app控制 xff0c 从而使串口发送指定的数据 xff0c 这样会以来就可以通过这款摄像头在手机app上控制小车的前后左右 xff0c 还可以实现无线图传的功能 这款摄像头通
  • ROS Robotics By Example No transform from [left_wheel] to [base_link]

    1 问题描述 在第二章中搭建双轮机器人 lt xml version 61 34 1 0 34 gt lt robot name 61 34 dd robot 34 gt lt base link gt lt link name 61 34
  • ROS中的坐标转换1

    1 坐标转换 坐标转换是指坐标系之间的平移以及旋转关系 xff0c 如坐标系A B C A xff0c B之间存在一个转换关系 T B A T B A T B A B与
  • 可用的双目标定代码(先单目标定再双目标定)

    最近做双目项目需要进行标定 xff0c 网上查看一些资料 目前所用是先进行单目标定 xff0c 然后在进行双目标定 代码如下 xff0c 配以后使用 span class token comment biaoding cpp span sp
  • 使用Docker配置SVO SLAM1与SVO SLAM2的运行环境

    1 ROS docker的获取 sudo docker pull osrf ros noetic desktop full 2 进入docker 2 1 使docker可以使用宿主机的图形界面 xff08 具体可以查看docker使用 xf
  • ubuntu下VScode使用Clang-Format进行代码格式化

    1 安装 Clang Format 在vscode中安装 Clang Format插件 2 在系统中安装Clang Format sudo apt get install clang format 3 生成Clang Format文件 格式