Xcode 9 新功能之自定義文件模板

我們每次新建文件時,Xcode 都會自動在文件頭部添加一段注釋。有些人並不喜歡這段注釋,甚至有人每次新建完文件都會把文件頭部的注釋刪除了,然後自己重新寫一段。從 Xcode 9 開始,如果你不喜歡默認的注釋,你可以使用文本宏自定義一個自己喜歡的模板了。

自定義文本宏

文本宏(Text Macro)是一種可以就地展開(expanded in-place)為特定文本的符號。在 Xcode 中新建文件時,新創建的文件的文件頭就使用了文本宏。Xcode 自帶了一些文本宏,我們不僅可以自定義這些自帶的文本宏,還可以創建自己的文本宏。

在自定義文本宏之前,我們需要准備兩樣東西:

  • 一個置於適當位置後的 IDETemplateMacros.plist 文件
  • 在 IDETemplateMacros.plist 文件中新增一項文本宏

Xcode 在尋找一個文本宏的值時,會按順序在以下幾個路徑中查找,並將使用第一個匹配成功的值。IDETemplateMacros.plist 文件放在不同路徑,其作用域也是不一樣的,具體如下:

作用域 路徑
單個項目和用戶 .xcodeproj/xcuserdata/[username].xcuserdatad/IDETemplateMacros.plist
單個項目的所有用戶 .xcodeproj/xcshareddata/IDETemplateMacros.plist
workspace中單個用戶的所有項目 .xcworkspace/xcuserdata/[username].xcuserdatad/IDETemplateMacros.plist
workspace中的所有項目和所有團隊成員 .xcworkspace/xcshareddata/IDETemplateMacros.plist
你的所有項目 ~/Library/Developer/Xcode/UserData/IDETemplateMacros.plist

若創建一個自定義的文本宏,可按下面的步驟進行:

  1. 打開對應路徑下的 IDETemplateMacros.plist 文件;

  2. 在頂層的字典(root)中新增一個鍵值對;

  3. 將該鍵值對的鍵設置為文本宏的名字;

  4. 將新增鍵值對的類型設置為字符串(String)

  5. 將鍵值對的值設置為你想要展開的文本

最後保存修改,一個文本宏就創建完成了。

如果對應路徑下沒有 IDETemplateMacros.plist 文件,你可以自己新建一個。在 Xcode 菜單中選擇 File > New File,文件類型選擇 Property List,並將其頂層數據項的類型設置為字典(Dictionary)。最後,將該文件命名為 IDETemplateMacros.plist 並保存在對應位置即可。

自定義文件頭

在 IDETemplateMacros.plist 中添加一個 FILEHEADER 文本宏即可對默認的文件頭進行定制。具體而言,你需要在 IDETemplateMacros.plist 文件的頂層字典(Root)中新增一個鍵值對,鍵(key)為FILEHEADER 值為你的自定義內容,如下圖所示:

在Xcode的plist編輯器中編輯IDETemplateMacros.plist文件

在 Xcode 的 plist 編輯器中輸入值時只能顯示一行,如果你想對文本進行換行,可以使用 Option + Return鍵插入換行符。

下面這段注釋便是 Xcode 自動添加的文件頭對應的文本宏:

1
2
3
4
5
6
//  ___FILENAME___
// ___PACKAGENAME___
//
// Created by ___FULLUSERNAME___ on ___DATE___.
// ___COPYRIGHT___
//

上述文件頭中使用的文本宏都是 Xcode 自帶的。從這個例子中我們可以看出,文本宏中是可以引用其它文本宏的,引用時在文本宏的名字前後分別加三個下劃(___)線即可。文本宏的詳細格式可以參見Text macro format reference

Xcode 自帶的文本宏

Xcode 自帶了不少文本宏,我們可以直接使用,具體有哪些可以參見官方文檔中的Text macros reference一節,這裡就不再贅述。

0%