XCode代碼格式化工具clang-format

前言

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

替換完成,再次使用快捷鍵格式化代碼生效。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容