zoukankan      html  css  js  c++  java
  • vscode clang-format插件的使用

    对于代码的格式,不同的人有不同的风格,在clang-format插件的基础上,可以自定义自己的代码风格。

    clang-format.exe位置(~/.vscode/extensions/ms-vscode.cpptools-0.26.1/LLVM/bin/clang-format.exe)

    vscode下使用clang-format:

    1.将.clang-format文件拷贝到对应的工程目录下:

     2.在打开的源代码下执行 Alt + shift + F 即可格式化源代码

    命令行下格式化指定文件:

     ./clang-format.exe --assume-filename=d:/ojenv/.clang-format -i d:/ojenv/src/main.c # 用自定义配置格式化代码  

     ./clang-format.exe -style=Webkit -i d:/ojenv/src/main.c # 用内置配置格式化代码,这里是 Webkit  

    Clang-format内置的几种基础风格:

    LLVM 、Google、Chromium、Mozilla 、WebKit、Microsoft

    命令行导出特定风格的配置文件(以Webkit为例)

    ./clang-format.exe -dump-config -style=Webkit >.clang-format

    以下是我导出的配置文件(以Webkit为基础,修改了行宽120swith语句缩进函数参数自动对齐三个特性):

    ---
    Language: Cpp
    # BasedOnStyle: WebKit
    AccessModifierOffset: -4
    AlignAfterOpenBracket: Align
    AlignConsecutiveAssignments: false
    AlignConsecutiveDeclarations: false
    AlignEscapedNewlines: Right
    AlignOperands: false
    AlignTrailingComments: false
    AllowAllParametersOfDeclarationOnNextLine: true
    AllowShortBlocksOnASingleLine: false
    AllowShortCaseLabelsOnASingleLine: false
    AllowShortFunctionsOnASingleLine: All
    AllowShortIfStatementsOnASingleLine: false
    AllowShortLoopsOnASingleLine: false
    AlwaysBreakAfterDefinitionReturnType: None
    AlwaysBreakAfterReturnType: None
    AlwaysBreakBeforeMultilineStrings: false
    AlwaysBreakTemplateDeclarations: false
    BinPackArguments: true
    BinPackParameters: true
    BraceWrapping:
    AfterClass: false
    AfterControlStatement: false
    AfterEnum: false
    AfterFunction: true
    AfterNamespace: false
    AfterObjCDeclaration: false
    AfterStruct: false
    AfterUnion: false
    AfterExternBlock: false
    BeforeCatch: false
    BeforeElse: false
    IndentBraces: false
    SplitEmptyFunction: true
    SplitEmptyRecord: true
    SplitEmptyNamespace: true
    BreakBeforeBinaryOperators: All
    BreakBeforeBraces: WebKit
    BreakBeforeInheritanceComma: false
    BreakBeforeTernaryOperators: true
    BreakConstructorInitializersBeforeComma: false
    BreakConstructorInitializers: BeforeComma
    BreakAfterJavaFieldAnnotations: false
    BreakStringLiterals: true
    ColumnLimit: 120
    CommentPragmas: '^ IWYU pragma:'
    CompactNamespaces: false
    ConstructorInitializerAllOnOneLineOrOnePerLine: false
    ConstructorInitializerIndentWidth: 4
    ContinuationIndentWidth: 4
    Cpp11BracedListStyle: false
    DerivePointerAlignment: false
    DisableFormat: false
    ExperimentalAutoDetectBinPacking: false
    FixNamespaceComments: false
    ForEachMacros:
    - foreach
    - Q_FOREACH
    - BOOST_FOREACH
    IncludeBlocks: Preserve
    IncludeCategories:
    - Regex: '^"(llvm|llvm-c|clang|clang-c)/'
    Priority: 2
    - Regex: '^(<|"(gtest|gmock|isl|json)/)'
    Priority: 3
    - Regex: '.*'
    Priority: 1
    IncludeIsMainRegex: '(Test)?$'
    IndentCaseLabels: true
    IndentPPDirectives: None
    IndentWidth: 4
    IndentWrappedFunctionNames: false
    JavaScriptQuotes: Leave
    JavaScriptWrapImports: true
    KeepEmptyLinesAtTheStartOfBlocks: true
    MacroBlockBegin: ''
    MacroBlockEnd: ''
    MaxEmptyLinesToKeep: 1
    NamespaceIndentation: Inner
    ObjCBlockIndentWidth: 4
    ObjCSpaceAfterProperty: true
    ObjCSpaceBeforeProtocolList: true
    PenaltyBreakAssignment: 2
    PenaltyBreakBeforeFirstCallParameter: 19
    PenaltyBreakComment: 300
    PenaltyBreakFirstLessLess: 120
    PenaltyBreakString: 1000
    PenaltyExcessCharacter: 1000000
    PenaltyReturnTypeOnItsOwnLine: 60
    PointerAlignment: Left
    RawStringFormats:
    - Delimiter: pb
    Language: TextProto
    BasedOnStyle: google
    ReflowComments: true
    SortIncludes: true
    SortUsingDeclarations: true
    SpaceAfterCStyleCast: false
    SpaceAfterTemplateKeyword: true
    SpaceBeforeAssignmentOperators: true
    SpaceBeforeParens: ControlStatements
    SpaceInEmptyParentheses: false
    SpacesBeforeTrailingComments: 1
    SpacesInAngles: false
    SpacesInContainerLiterals: true
    SpacesInCStyleCastParentheses: false
    SpacesInParentheses: false
    SpacesInSquareBrackets: false
    Standard: Cpp11
    TabWidth: 8
    UseTab: Never
    ...

     

  • 相关阅读:
    JavaScript日期处理类库momentjs
    sublime text 2 学习
    node.js代理设置
    使用nodejs将html5 canvas base64编码图片保存为文件
    Sublime Text 2 常用插件介绍
    把silverlight treeview 节点前面的小三角换成自定义的图片
    文件监控
    linux内核中的红黑树代码解析
    static关键字
    红黑树的实现(二)
  • 原文地址:https://www.cnblogs.com/tongyishu/p/12141558.html
Copyright © 2011-2022 走看看