XCode代码格式化工具clang-format

前言

Xcode中自带使用代码格式化 Editor -> structure-> Re-Indent 并不好用或者说根本没有效果,然后去搜索了下格式化工具,一开始想在Xcode中先安装Alcatraz插件,通过Alcatraz插件然后去安装clang-format格式化插件,无奈在某篇博客中有位大佬提到Alcatraz对Xcode版本有要求,最终使用命令行安装。
本机的mac系统版本:macOS Ventura 13.3.1
本机的Xcode版本:14.3

安装

终端输入命令,等待安装成功

brew install clang-format

安装成功查看版本

clang-format --version

成功查看到clang-format版本信息说明安装成功了,如下图所示:


image.png

添加快捷键

成功安装插件之后,为了更方便快捷的使用插件,一般会在xcode设置一个快捷键快速格式化选中代码。以下是如何设置快捷键以及设置clang-format的配置文件。

  • 应用程序找到【自动操作】


    image.png
  • 添加shell脚本-注意方框内的内容
    添加一个shell和快捷键绑定,shell脚本的内容就是执行代码格式化


    image.png

    shell脚本中的代码

export PATH=/usr/local/bin:$PATH
clang-format
  • 保存【重要】
    保存的时候会让起一个名称,这个名称后面会用到,需要注意
    tips:如果查看自己创建的脚本【/Users/你的用户名/Library/Services】
  • 添加快捷键
    打开系统设置


    image.png

    找到键盘设置


    image.png

    添加快捷键
    1.应用程序选择xcode
    2.菜单标题为上面保存的名称

    3.键位设置【不能和xcode其他快捷键冲突,我这里设置的是commond+alt+k】


    image.png

    6.重启xcode
    点击你需要格式化的代码,右键如下图:
    image.png

设置插件格式

当执行快捷键操作时会报错,需要复制方框中的路径找到.clang-format文件
tips:在桌面键位commond + shift + g添加上面的路径找到文件位置,打开文件,将里面的代码替换为下面的格式


image.png
# 工具 https://github.com/mapbox/XcodeClangFormat(需要添加签名使用)
# 函数名详细地址 英文 http://clang.llvm.org/docs/ClangFormatStyleOptions.html
# 函数名详细地址 中文 https://www.cnblogs.com/PaulpauL/p/5929753.html

# 基于样式
BasedOnStyle: LLVM

# 对齐注释
AlignTrailingComments: true

# 指针和引用的对齐方式
PointerAlignment: Right

# 用于缩进的列数
IndentWidth: 4

# switch的case缩进
IndentCaseLabels: true

# OC里面,在@property后加空格
ObjCSpaceAfterProperty: true

# OC里面,在Protocol前后加空格
ObjCSpaceBeforeProtocolList: true

# 单行注释前的空格数
SpacesBeforeTrailingComments: 1

# 连续的空行保留几行
MaxEmptyLinesToKeep: 1

# 保留block里面的空行
KeepEmptyLinesAtTheStartOfBlocks: false

# 每行字符的限制,0表示没有限制
ColumnLimit: 0

# []中添加空格
SpacesInSquareBrackets: false

# ()中添加空格
SpacesInParentheses : false

# 容器类前添加空格
SpacesInContainerLiterals: true

# 赋值运算符前加空格
SpaceBeforeAssignmentOperators: true

# 在空括号中加空格
SpaceInEmptyParentheses: false

# 在<>中间插入空格
SpacesInAngles: false

# 换行的时候对齐操作符
AlignOperands: true

# 括号中的(),{},[]代码对齐方式
#AlignAfterOpenBracket: Align

#ContinuationIndentWidth: 0

# 赋值=对齐
AlignConsecutiveAssignments: false

# 声明参数对齐
AlignConsecutiveDeclarations: false

# 运算符位置
BreakBeforeBinaryOperators: None

# 允许短的函数放在同一行
#AllowShortFunctionsOnASingleLine: None

# 允许case在同一行
AllowShortCaseLabelsOnASingleLine: false

# 允许if在同一行
AllowShortIfStatementsOnASingleLine: false

# 允许while在同一行
AllowShortLoopsOnASingleLine: false

# 允许将简单的语句块放到同一行
AllowShortBlocksOnASingleLine: false

#缩进函数名
IndentWrappedFunctionNames: false

# 形参 如果为false要么都在同一行,要么各有一行
BinPackParameters: false

# 实参 如果为false要么都在同一行,要么各有一行
BinPackArguments: false

# 大括号换行
BreakBeforeBraces: Custom
BraceWrapping:
  # class定义后面
  AfterClass: true
  # 控制语句后面
  AfterControlStatement: false
  # enum定义后面
  AfterEnum: false
  # 函数定义后面
  AfterFunction: false
  # 命名空间定义后面
  AfterNamespace: false
  # struct定义后面
  AfterStruct: false
  # union定义后面
  AfterUnion: false
  # catch之前
  BeforeCatch: false

替换完成,再次使用快捷键格式化代码生效。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容