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%