我对这个问题进行了更多挖掘,以从上述评论中确认或反驳我的假设。Xcode 确实直接针对查找/替换活动中涉及的文件的磁盘数据工作。文件系统事件表明查找/替换操作打开 .pbxproj 文件并从上到下开始正则表达式活动,通过文件和组对构建配置和设置部分的引用最终将搜索应用于每个指向的磁盘数据.pbxproj 中的条目
自然,根据用户输入的正则表达式,完全有可能在搜索中精确匹配光标当前位置的内容并触发替换操作,从而破坏当前搜索的上下文。这很可能会导致过早终止搜索,但如果搜索没有很好地包含,也可能会触发无限长的查找/替换操作(例如,查找“.”替换为“aa”)。当涉及到这种 Xcode 查找/替换行为时,为了阻止整个类的“自食蛇”问题,Apple 似乎选择在搜索操作期间锁定 .pbxproj。虽然这确实意味着您不能使用 Xcode 的 Find/Replace 正则表达式工具,但还是有很多很棒的文本编辑器(甚至是免费的!) 允许您通过多文件搜索(TextWrangler 和 BBEdit)进行正则表达式查找/替换。这些编辑器允许您将搜索过滤到主项目子文件夹中的文件模式(例如 *.pbxproj)。根据您的项目在磁盘上的组织方式,选择从共同祖先开始的搜索,然后您可以像在 Xcode 中一样逐步完成查找/替换操作。事实上,您在 Xcode 中标识的相同正则表达式字符串可以在这些工具中使用,以影响您需要的更改。选择一个从共同祖先开始的搜索,您可以像在 Xcode 中那样逐步完成查找/替换操作。事实上,您在 Xcode 中标识的相同正则表达式字符串可以在这些工具中使用,以影响您需要的更改。选择一个从共同祖先开始的搜索,您可以像在 Xcode 中那样逐步完成查找/替换操作。事实上,您在 Xcode 中标识的相同正则表达式字符串可以在这些工具中使用,以影响您需要的更改。
与大多数大规模或自主编辑一样,请确保保留要编辑的文件的备份(这对您来说至少是双倍的,因为您的项目完全是本地的、非源代码控制的项目),以防万一您需要回滚您的变化。祝你好运,让我们知道你最终选择了哪条途径以及事情进展如何。