文章目录
- 0 前言
- 1 工具准备
- 1.1 插件准备
- 1.2 添加.clang-format
- 1.3 添加配置
- 2 快速上手
0 前言
各路大神都说clangd好,我也来试试。这篇主要讲格式化部分。
1 工具准备
1.1 插件准备
照图安装。
1.2 添加.clang-format
右键添加文件,跟添加个.h或者.c文件一样。
1.3 添加配置
点进.clang-format,添加如下内容:
英语好的看字面意思,不好的让AI给翻译翻译,动手试试修改效果。不一一赘述。
---
Language: Cpp
# BasedOnStyle: LLVM
AccessModifierOffset: -2
AlignAfterOpenBracket: Align
AlignArrayOfStructures: None
AlignConsecutiveAssignments:Enabled: falseAcrossEmptyLines: falseAcrossComments: falseAlignCompound: falseAlignFunctionPointers: falsePadOperators: true
AlignConsecutiveBitFields:Enabled: falseAcrossEmptyLines: falseAcrossComments: falseAlignCompound: falseAlignFunctionPointers: falsePadOperators: false
AlignConsecutiveDeclarations:Enabled: falseAcrossEmptyLines: falseAcrossComments: falseAlignCompound: falseAlignFunctionPointers: falsePadOperators: false
# 宏定义自动对齐
AlignConsecutiveMacros:Enabled: trueAcrossEmptyLines: falseAcrossComments: falseAlignCompound: falseAlignFunctionPointers: falsePadOperators: false
AlignConsecutiveShortCaseStatements:Enabled: falseAcrossEmptyLines: falseAcrossComments: falseAlignCaseColons: false
AlignEscapedNewlines: Right
AlignOperands: Align
AlignTrailingComments:Kind: AlwaysOverEmptyLines: 0
AllowAllArgumentsOnNextLine: true
AllowAllParametersOfDeclarationOnNextLine: true
AllowBreakBeforeNoexceptSpecifier: Never
AllowShortBlocksOnASingleLine: Never
AllowShortCaseLabelsOnASingleLine: false
AllowShortCompoundRequirementOnASingleLine: true
AllowShortEnumsOnASingleLine: true
AllowShortFunctionsOnASingleLine: All
AllowShortIfStatementsOnASingleLine: Never
AllowShortLambdasOnASingleLine: All
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: MultiLine
AttributeMacros:- __capability
BinPackArguments: true
BinPackParameters: true
BitFieldColonSpacing: Both
BraceWrapping:AfterCaseLabel: falseAfterClass: falseAfterControlStatement: NeverAfterEnum: falseAfterExternBlock: falseAfterFunction: trueAfterNamespace: falseAfterObjCDeclaration: falseAfterStruct: trueAfterUnion: trueBeforeCatch: falseBeforeElse: falseBeforeLambdaBody: falseBeforeWhile: falseIndentBraces: falseSplitEmptyFunction: trueSplitEmptyRecord: trueSplitEmptyNamespace: true
BreakAdjacentStringLiterals: true
BreakAfterAttributes: Leave
BreakAfterJavaFieldAnnotations: false
BreakArrays: true
BreakBeforeBinaryOperators: None
BreakBeforeConceptDeclarations: Always
BreakBeforeBraces: Allman
BreakBeforeInlineASMColon: OnlyMultiline
BreakBeforeTernaryOperators: true
BreakConstructorInitializers: BeforeColon
BreakInheritanceList: BeforeColon
BreakStringLiterals: true
ColumnLimit: 80
CommentPragmas: '^ IWYU pragma:'
CompactNamespaces: false
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
Cpp11BracedListStyle: true
DerivePointerAlignment: false
DisableFormat: false
EmptyLineAfterAccessModifier: Never
EmptyLineBeforeAccessModifier: LogicalBlock
ExperimentalAutoDetectBinPacking: false
FixNamespaceComments: true
ForEachMacros:- foreach- Q_FOREACH- BOOST_FOREACH
IfMacros:- KJ_IF_MAYBE
IncludeBlocks: Preserve
IncludeCategories:- Regex: '^"(llvm|llvm-c|clang|clang-c)/'Priority: 2SortPriority: 0CaseSensitive: false- Regex: '^(<|"(gtest|gmock|isl|json)/)'Priority: 3SortPriority: 0CaseSensitive: false- Regex: '.*'Priority: 1SortPriority: 0CaseSensitive: false
IncludeIsMainRegex: '(Test)?$'
IncludeIsMainSourceRegex: ''
IndentAccessModifiers: false
IndentCaseBlocks: false
IndentCaseLabels: false
IndentExternBlock: AfterExternBlock
IndentGotoLabels: true
IndentPPDirectives: None
IndentRequiresClause: true
IndentWidth: 4
IndentWrappedFunctionNames: false
InsertBraces: false
InsertNewlineAtEOF: false
InsertTrailingCommas: None
IntegerLiteralSeparator:Binary: 0BinaryMinDigits: 0Decimal: 0DecimalMinDigits: 0Hex: 0HexMinDigits: 0
JavaScriptQuotes: Leave
JavaScriptWrapImports: true
KeepEmptyLinesAtTheStartOfBlocks: true
KeepEmptyLinesAtEOF: false
LambdaBodyIndentation: Signature
LineEnding: DeriveLF
MacroBlockBegin: ''
MacroBlockEnd: ''
MaxEmptyLinesToKeep: 1
NamespaceIndentation: None
ObjCBinPackProtocolList: Auto
ObjCBlockIndentWidth: 2
ObjCBreakBeforeNestedBlockParam: true
ObjCSpaceAfterProperty: false
ObjCSpaceBeforeProtocolList: true
PackConstructorInitializers: BinPack
PenaltyBreakAssignment: 2
PenaltyBreakBeforeFirstCallParameter: 19
PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120
PenaltyBreakOpenParenthesis: 0
PenaltyBreakScopeResolution: 500
PenaltyBreakString: 1000
PenaltyBreakTemplateDeclaration: 10
PenaltyExcessCharacter: 1000000
PenaltyIndentedWhitespace: 0
PenaltyReturnTypeOnItsOwnLine: 60
PointerAlignment: Right
PPIndentWidth: -1
QualifierAlignment: Leave
ReferenceAlignment: Pointer
ReflowComments: false
RemoveBracesLLVM: false
RemoveParentheses: Leave
RemoveSemicolon: false
RequiresClausePosition: OwnLine
RequiresExpressionIndentation: OuterScope
SeparateDefinitionBlocks: Leave
ShortNamespaceLines: 1
SkipMacroDefinitionBody: false
SortIncludes: CaseSensitive
SortJavaStaticImport: Before
SortUsingDeclarations: LexicographicNumeric
SpaceAfterCStyleCast: false
SpaceAfterLogicalNot: false
SpaceAfterTemplateKeyword: true
SpaceAroundPointerQualifiers: Default
SpaceBeforeAssignmentOperators: true
SpaceBeforeCaseColon: false
SpaceBeforeCpp11BracedList: false
SpaceBeforeCtorInitializerColon: true
SpaceBeforeInheritanceColon: true
SpaceBeforeJsonColon: false
SpaceBeforeParens: ControlStatements
SpaceBeforeParensOptions:AfterControlStatements: trueAfterForeachMacros: trueAfterFunctionDefinitionName: falseAfterFunctionDeclarationName: falseAfterIfMacros: trueAfterOverloadedOperator: falseAfterPlacementOperator: trueAfterRequiresInClause: falseAfterRequiresInExpression: falseBeforeNonEmptyParentheses: false
SpaceBeforeRangeBasedForLoopColon: true
SpaceBeforeSquareBrackets: false
SpaceInEmptyBlock: false
SpacesBeforeTrailingComments: 1
SpacesInAngles: Never
SpacesInContainerLiterals: true
SpacesInLineCommentPrefix:Minimum: 1Maximum: -1
SpacesInParens: Never
SpacesInParensOptions:InCStyleCasts: falseInConditionalStatements: falseInEmptyParentheses: falseOther: false
SpacesInSquareBrackets: false
Standard: Latest
StatementAttributeLikeMacros:- Q_EMIT
StatementMacros:- Q_UNUSED- QT_REQUIRE_VERSION
TabWidth: 8
UseTab: Never
VerilogBreakBetweenInstancePorts: true
WhitespaceSensitiveMacros:- BOOST_PP_STRINGIZE- CF_SWIFT_NAME- NS_SWIFT_NAME- PP_STRINGIZE- STRINGIZE
...
2 快速上手
快捷键 alt + shift + F。
Done!