前言
Xcode中自帶使用代碼格式化 Editor -> structure-> Re-Indent 并不好用或者說根本沒有效果,然后去搜索了下格式化工具,一開始想在Xcode中先安裝Alcatraz插件,通過Alcatraz插件然后去安裝clang-format格式化插件,無奈在某篇博客中有位大佬提到Alcatraz對Xcode版本有要求,最終使用命令行安裝。
本機(jī)的mac系統(tǒng)版本:macOS Ventura 13.3.1
本機(jī)的Xcode版本:14.3
安裝
終端輸入命令,等待安裝成功
brew install clang-format
安裝成功查看版本
clang-format --version
成功查看到clang-format版本信息說明安裝成功了,如下圖所示:

image.png
添加快捷鍵
成功安裝插件之后,為了更方便快捷的使用插件,一般會在xcode設(shè)置一個快捷鍵快速格式化選中代碼。以下是如何設(shè)置快捷鍵以及設(shè)置clang-format的配置文件。
-
應(yīng)用程序找到【自動操作】
image.png -
添加shell腳本-注意方框內(nèi)的內(nèi)容
添加一個shell和快捷鍵綁定,shell腳本的內(nèi)容就是執(zhí)行代碼格式化
image.png
shell腳本中的代碼
export PATH=/usr/local/bin:$PATH
clang-format
- 保存【重要】
保存的時候會讓起一個名稱,這個名稱后面會用到,需要注意
tips:如果查看自己創(chuàng)建的腳本【/Users/你的用戶名/Library/Services】 -
添加快捷鍵
打開系統(tǒng)設(shè)置
image.png
找到鍵盤設(shè)置
image.png
添加快捷鍵
1.應(yīng)用程序選擇xcode
2.菜單標(biāo)題為上面保存的名稱
3.鍵位設(shè)置【不能和xcode其他快捷鍵沖突,我這里設(shè)置的是commond+alt+k】
image.png
6.重啟xcode
點(diǎn)擊你需要格式化的代碼,右鍵如下圖:
image.png
設(shè)置插件格式
當(dāng)執(zhí)行快捷鍵操作時會報錯,需要復(fù)制方框中的路徑找到.clang-format文件
tips:在桌面鍵位commond + shift + g添加上面的路徑找到文件位置,打開文件,將里面的代碼替換為下面的格式

image.png
# 工具 https://github.com/mapbox/XcodeClangFormat(需要添加簽名使用)
# 函數(shù)名詳細(xì)地址 英文 http://clang.llvm.org/docs/ClangFormatStyleOptions.html
# 函數(shù)名詳細(xì)地址 中文 https://www.cnblogs.com/PaulpauL/p/5929753.html
# 基于樣式
BasedOnStyle: LLVM
# 對齊注釋
AlignTrailingComments: true
# 指針和引用的對齊方式
PointerAlignment: Right
# 用于縮進(jìn)的列數(shù)
IndentWidth: 4
# switch的case縮進(jìn)
IndentCaseLabels: true
# OC里面,在@property后加空格
ObjCSpaceAfterProperty: true
# OC里面,在Protocol前后加空格
ObjCSpaceBeforeProtocolList: true
# 單行注釋前的空格數(shù)
SpacesBeforeTrailingComments: 1
# 連續(xù)的空行保留幾行
MaxEmptyLinesToKeep: 1
# 保留block里面的空行
KeepEmptyLinesAtTheStartOfBlocks: false
# 每行字符的限制,0表示沒有限制
ColumnLimit: 0
# []中添加空格
SpacesInSquareBrackets: false
# ()中添加空格
SpacesInParentheses : false
# 容器類前添加空格
SpacesInContainerLiterals: true
# 賦值運(yùn)算符前加空格
SpaceBeforeAssignmentOperators: true
# 在空括號中加空格
SpaceInEmptyParentheses: false
# 在<>中間插入空格
SpacesInAngles: false
# 換行的時候?qū)R操作符
AlignOperands: true
# 括號中的(),{},[]代碼對齊方式
#AlignAfterOpenBracket: Align
#ContinuationIndentWidth: 0
# 賦值=對齊
AlignConsecutiveAssignments: false
# 聲明參數(shù)對齊
AlignConsecutiveDeclarations: false
# 運(yùn)算符位置
BreakBeforeBinaryOperators: None
# 允許短的函數(shù)放在同一行
#AllowShortFunctionsOnASingleLine: None
# 允許case在同一行
AllowShortCaseLabelsOnASingleLine: false
# 允許if在同一行
AllowShortIfStatementsOnASingleLine: false
# 允許while在同一行
AllowShortLoopsOnASingleLine: false
# 允許將簡單的語句塊放到同一行
AllowShortBlocksOnASingleLine: false
#縮進(jìn)函數(shù)名
IndentWrappedFunctionNames: false
# 形參 如果為false要么都在同一行,要么各有一行
BinPackParameters: false
# 實(shí)參 如果為false要么都在同一行,要么各有一行
BinPackArguments: false
# 大括號換行
BreakBeforeBraces: Custom
BraceWrapping:
# class定義后面
AfterClass: true
# 控制語句后面
AfterControlStatement: false
# enum定義后面
AfterEnum: false
# 函數(shù)定義后面
AfterFunction: false
# 命名空間定義后面
AfterNamespace: false
# struct定義后面
AfterStruct: false
# union定義后面
AfterUnion: false
# catch之前
BeforeCatch: false
替換完成,再次使用快捷鍵格式化代碼生效。





