iOS Clang-Format Xcode 代碼格式化

在Xcode中配置clang-format
1. 通過brew安裝 clang-format
brew install clang-format

查看是否安裝成功
clang-format --version
clang-format version 14.0.6
說明安裝成功了
2. 添加自動化服務(wù)
  • 打開自動操作如下圖
  • 打開"Automator" 選擇 "Quick Action"/"快捷操作"
  • 按照下圖添加 shell 腳本
# 腳本具體內(nèi)容
export PATH=/usr/local/bin:$PATH
clang-format
3. 保存命名為 xcode_format (后邊會用到)
4. 配置文件 在當(dāng)前用戶的根目錄 ~ 放置一個 .clang-format 文件
cd ~/
touch ~/.clang-format
  • .clnag-format 文件的示例 (更多的選項可以查看clang-format可選項)
    我的 .clnag-format 文件配置如下
# 工具 https://github.com/mapbox/XcodeClangFormat(需要添加簽名使用)
# 函數(shù)名詳細地址 英文 http://clang.llvm.org/docs/ClangFormatStyleOptions.html
# 函數(shù)名詳細地址 中文 https://www.cnblogs.com/PaulpauL/p/5929753.html

# OC語言
Language: ObjC

# 基于LLVM格式
# BasedOnStyle: LLVM

# 對齊注釋
AlignTrailingComments: true

# 指針和引用的對齊方式
PointerAlignment: Right

# 用于縮進的列數(shù)
IndentWidth: 4

# 針對OC的block的縮進寬度
ObjCBlockIndentWidth: 4

# OC的block嵌套參數(shù)不換行
ObjCBreakBeforeNestedBlockParam: false

# switch的case縮進
IndentCaseLabels: true

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

# 括號中的(),{},[]代碼對齊方式
AlignAfterOpenBracket: Align

#ContinuationIndentWidth: 0

# 賦值=對齊
AlignConsecutiveAssignments: true

# 聲明參數(shù)對齊
AlignConsecutiveDeclarations: false

# 運算符位置
BreakBeforeBinaryOperators: None

# 如果為真(true), 三元運算符將被放置在換行后
BreakBeforeTernaryOperators: false

# 總是在逗號和對齊逗號跟冒號前把構(gòu)造函數(shù)初始化式換行
BreakConstructorInitializersBeforeComma: false

# 允許短的函數(shù)放在同一行
#AllowShortFunctionsOnASingleLine: None

# 允許case在同一行
AllowShortCaseLabelsOnASingleLine: false

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

# 單行注釋前的空格數(shù)
SpacesBeforeTrailingComments: 1

# 連續(xù)的空行保留幾行
MaxEmptyLinesToKeep: 1

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

# 每行字符的限制汤功,0表示沒有限制
ColumnLimit: 0

# []中添加空格
SpacesInSquareBrackets: false

# ()中添加空格
SpacesInParentheses : false

# @[]里面兩邊空格,默認(rèn)true
SpacesInContainerLiterals: false

# 賦值運算符前加空格
SpaceBeforeAssignmentOperators: true

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

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

# 換行的時候?qū)R操作符
AlignOperands: true

# 允許if在同一行
AllowShortIfStatementsOnASingleLine: true

# 允許while在同一行
AllowShortLoopsOnASingleLine: false

# 允許將簡單的語句塊放到同一行
AllowShortBlocksOnASingleLine: true

#縮進函數(shù)名
IndentWrappedFunctionNames: false

# 形參 如果為false要么都在同一行弃理,要么各有一行
BinPackParameters: false

# 實參 如果為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
5. 在Xcode中使用
command + A  全選 ==> 右鍵(雙指按壓觸摸板) 如下圖選擇 Services ==> xcode_format(剛剛創(chuàng)建的腳本)
  • 查看腳本文件保存的路徑
open ~/Library/Services
6. 設(shè)置快捷鍵

系統(tǒng)偏好->鍵盤->快捷鍵->app快捷鍵->選擇Xcode->設(shè)置快捷鍵按鈕


7. 如果報如下錯誤
  • 查看 /usr/local/bin 文件夾下是否存在 clang-format 可執(zhí)行文件
cd  /usr/local/bin 

如果不存在,

嘗試如下命令
查找clang-format的具體路徑


image.png

然后將clang-format 軟連接到/usr/local/bin 路徑下

ln -s /opt/homebrew/bin/clang-format /usr/local/bin

上邊不行的話再嘗試如下操作.

1 . 訪問LLVM下載頁
2 .選擇需要的LLVM版本進行下載,我這里選擇了最新的版本 15.0.2


3 . 選擇mac對應(yīng)的架構(gòu) 我的電腦是M1 選擇了arm64架構(gòu)

4 . 把解壓文件夾中bin目錄下的clang-format文件復(fù)制到usr/local/bin文件夾里,sudo mv (解壓之后的路徑)/bin/clang-format /usr/local/bin/clang-format

這樣 clang-format, bash 命令未找到。的問題就解決了

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末痘昌,一起剝皮案震驚了整個濱河市钥勋,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌辆苔,老刑警劉巖算灸,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異驻啤,居然都是意外死亡菲驴,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進店門骑冗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來赊瞬,“玉大人,你說我怎么就攤上這事贼涩∏山В” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵遥倦,是天一觀的道長谤绳。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么闷供? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任烟央,我火速辦了婚禮,結(jié)果婚禮上歪脏,老公的妹妹穿的比我還像新娘疑俭。我一直安慰自己,他們只是感情好婿失,可當(dāng)我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布钞艇。 她就那樣靜靜地躺著,像睡著了一般豪硅。 火紅的嫁衣襯著肌膚如雪哩照。 梳的紋絲不亂的頭發(fā)上架谎,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天令宿,我揣著相機與錄音闻察,去河邊找鬼许蓖。 笑死概页,一個胖子當(dāng)著我的面吹牛伴嗡,可吹牛的內(nèi)容都是我干的婉支。 我是一名探鬼主播帆卓,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼稽穆,長吁一口氣:“原來是場噩夢啊……” “哼冠王!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起舌镶,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤柱彻,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后餐胀,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體哟楷,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年否灾,在試婚紗的時候發(fā)現(xiàn)自己被綠了吓蘑。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡坟冲,死狀恐怖磨镶,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情健提,我是刑警寧澤琳猫,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站私痹,受9級特大地震影響脐嫂,放射性物質(zhì)發(fā)生泄漏统刮。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一账千、第九天 我趴在偏房一處隱蔽的房頂上張望侥蒙。 院中可真熱鬧,春花似錦匀奏、人聲如沸鞭衩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽论衍。三九已至,卻和暖如春聚磺,著一層夾襖步出監(jiān)牢的瞬間坯台,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工瘫寝, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蜒蕾,地道東北人。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓焕阿,卻偏偏與公主長得像滥搭,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子捣鲸,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內(nèi)容