如何在 Xcode for Swift 中使用代码格式化程序?

Posted

技术标签:

【中文标题】如何在 Xcode for Swift 中使用代码格式化程序?【英文标题】:How to use code formatter in Xcode for Swift? 【发布时间】:2015-01-15 14:54:51 【问题描述】:

Xcode 代码格式化程序 Swift

我正在尝试自动格式化我用 Swift 编写的代码。如果您在团队中工作并使用 CVS 并且不想合并几个小时,那么这是必要的。

Ctrl+I 只是缩进,但例如我想在函数之间留出适当的空间,就像在 Clang 中一样。

【问题讨论】:

这能回答你的问题吗? Code Formatting In Xcode 【参考方案1】:

+i重新格式化代码Ctrl+i : 修复代码缩进

尽管它具有良好的 IntelliSense,但 xcode 通常在代码格式化方面很糟糕。希望它更好。 苹果要在这方面花这么多功夫才能做到VS级别的好。

【讨论】:

Control + i 确实适用于 Swift。你认为 Objective C 的代码格式化比 Swift 更好吗?只是好奇。 Control + i 仅在 swift 中缩进代码。它不固定括号等后的空格。 ^ 只是表示 ctrl——为什么这些被列为单独的快捷方式?两者都是完全相同的组合键。 ^i 重新缩进——它重新格式化。【参考方案2】:

在 Xcode [Objective-C,Swift] 中:

1) +A高亮代码

2) +I重新格式化代码

【讨论】:

这应该是 2021 年的答案。您必须先选择代码 (cmd + A),然后 ctrl + 我会为您格式化。 ⌃+I:只重新缩进,不重新格式化。至少对于 swift 无论如何。例如尝试重新格式化:struct Tag var name: String 它不会做任何事情【参考方案3】:

选择行,然后按Ctrl+I

【讨论】:

在回答一个包含 8 个其他答案的四年前的问题时,请花时间确保您的答案没有重复,如果不是指出您的问题的新方面回答地址。还可以通过在每个键周围使用 <kbd></kbd> 来完成击键组合的格式化。【参考方案4】:

SwiftFormat 是一个流行的 swift 代码格式化程序。它有一个extension for Xcode,可以从Editor 菜单访问。

引用 SwiftFormat 自述文件:

SwiftFormat 是一个用于重新格式化的代码库和命令行工具 macOS 或 Linux 上的 swift 代码。

SwiftFormat 超越了您对代码的期望 格式化程序。除了调整空白之外,它还可以插入或 删除隐式自我,删除多余的括号,并更正许多 与标准 Swift 习语的其他偏差。

【讨论】:

【参考方案5】:

(我知道问题是 Xcode 但是) 就个人而言,这是将 AppCode 与 Xcode 一起使用的另一个原因。

虽然 Xcode 只修复了 Swift 代码的缩进,但如问题中所述,AppCode 至少也处理了空格。有点相关的是,默认情况下它会从空行中删除缩进。

AppCode 的 Swift 支持肯定还不完美,您仍然需要检查两者中的代码,但由于更好的导航和类似的东西,它仍然值得。

【讨论】:

【参考方案6】:

我写了一个关于格式化 Swift 代码的扩展应用:Swimat

有两种安装方式

    brew cask install swimat

    克隆这个 repo,构建并重启 Xcode。

更多信息请见https://github.com/Jintin/Swimat

【讨论】:

我认为您应该提及或说明Swimat 是否处理行之间的格式化空格。此处或 github 页面上均未说明或传达该信息。根据 gif 插图,Xcode 默认格式化已经处理了。 Swimat 会像默认的 Xcode 那样做,即删除空行空间。但不删除空行。感谢您的反馈,我们稍后会更新说明。 很好,我希望也有一个用于 Objective-C 的。 老兄,你做得很棒。为什么没有人指出这个解决方案?在 xcode 中格式化有几个悬而未决的问题。【参考方案7】:

Xcode 和 Swift 2.0:每个文件,Cmd-A 然后 Ctl-I。 Ctl-I 适用于突出显示的内容,Cmd-A 突出显示所有内容。请注意不要在 Ctl-A 之后意外删除所有源代码!

【讨论】:

【参考方案8】:

xcode 中的重新格式化代码命令是 Ctrl-I,而不是 Cmd-I,它似乎工作得很好。

【讨论】:

是的,我就是这个意思。 Ctrl-I。 Control + 我似乎在 Swift 和 Objective C 上执行缩进,但我希望在 Xcode 中看到更完整的语法美化 ala Visual Studio 和 Resharper - 但话虽如此,我认为 Xcode 是正在成为可用的 IDE。 Ctrl+I 似乎对我在 XCode 7 beta 5 中的文本选择没有影响 如果你使用 XCode,你可以试试我的插件:Swimat - github.com/Jintin/Swimat control-I 不重新格式化代码,它只是“平衡”每一行。因此,它不会强制执行所有必要的换行符、缩进等,这是 Swift 中控制结构的标准习语的一部分。 (令人困惑的是,Xcode 能够在您键入时自动格式化您的 Swift,但没有按钮可以稍后“修复”它的批次!)【参考方案9】:

我建议使用带有 swift 插件的 sublime text,这将允许您热键代码格式。 https://sublime.wbond.net/packages/Swift

【讨论】:

我认为这不是很有效 - 你是说 OP 必须在单独的程序中(单独)打开每个文件才能格式化它们? 建议不要重新打开它们。我工作的开发人员使用 sublime text 工作,而不是 xcode。 公平地说,OP 是在询问如何在 Xcode 中自动格式化他的代码。所以建议他在 Sublime Text 中这样做要么是说(1)他单独打开它们,要么(2)他切换编辑器。 我不太关心“公平”(对谁公平?),而是提供解决方案。有时有必要跳出框框思考。此解决方案可能属于该类别。不过感谢您的意见。 我只是为 Sublime 安装了 swift 插件,但似乎 Sublime 没有热键或菜单来制作格式。

以上是关于如何在 Xcode for Swift 中使用代码格式化程序?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 XCode 8 Playgrounds 中使用 Swift 2.3?

如何在 Xcode 6.1 的 Swift 中使用 NSURL?

如何在 Swift for Realm 模型中设置主键

如何在 Swift / Xcode 12.3 中重用代码块进行闭包

如何使用swift在Xcode中设置背景图像?

如何在 swift 中制作动画(xcode 6 beta)