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

89

Xcode代码格式化器- Swift

我正在尝试自动格式化用Swift编写的代码。如果您正在团队中工作并使用CVS,而且不想花费数小时进行合并,则这是必需的。

Ctrl+I 只会缩进,但是例如我希望在函数之间以及所有内容之间都有适当的空格,就像在Clang中一样。


这个回答解决了你的问题吗?Xcode中的代码格式化 - Keval Langalia
10个回答

88

在Xcode中,重新格式化代码的命令是Ctrl-I,而不是Cmd-I,并且它似乎运行良好。


1
是的,那就是我想说的。Ctrl-I。 - S. Birklin
23
使用Control + I似乎可以对Swift和Objective C进行缩进,但我希望在Xcode中看到更完整的语法美化,就像Visual Studio和Resharper一样-但话说回来,我认为Xcode正在成为一个可用的IDE。 - Shawn J. Molloy
1
在XCode 7 beta 5中,Ctrl+I对我选择的文本似乎没有任何影响。 - codecowboy
2
如果您正在使用XCode,可以尝试我的插件:Swimat - https://github.com/Jintin/Swimat - Jintin
6
control-I并不重新格式化代码,它只是"平衡"每一行。因此,在Swift控制结构标准用法中所需的所有换行、缩进等都没有强制执行。(令人困惑的是,Xcode有能力在键入时自动格式化您的Swift代码,但后续没有“修复”批处理的按钮!) - Fattie
显示剩余3条评论

64

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

有两种安装方式

  1. brew install swimat --cask

  2. 克隆此存储库,构建并重新启动Xcode。

有关更多信息,请参见https://github.com/Jintin/Swimat

preview


1
我认为你应该提及或说明Swimat是否处理行之间的格式空格。这些信息在此处或Github页面上都没有被说明或传达。根据gif动画,Xcode默认格式已经处理了这个问题。 - user3144836
Swimat 将像默认的 Xcode 一样,删除空行间隔。 但不会删除空行。 感谢您的反馈,我们稍后会更新描述。 - Jintin
很好,我希望也有一个适用于Objective-C的。 - CyberMew
2
兄弟,你做得太棒了。为什么没有其他人指向这个解决方案?在Xcode中有几个关于格式的开放性问题。 - Keval Langalia

31

在 Xcode [Objective-C,Swift] 中:

1) +A: 高亮代码

2) +I: 重新格式化代码


3
这应该是2021年的标准答案。您需要先选择代码(cmd + A),然后按ctrl + I进行格式化。 - dragonfly02
9
⌃+I:仅重新缩进,不重新格式化。至少在Swift中是这样的。例如尝试重新格式化以下内容:}``` 它不会做任何事情。 - Sergio Martins
是什么意思?那只是在我的6上面的一个字符,对吧? - undefined

21

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

尽管Xcode拥有良好的智能提示,但通常在代码格式化方面表现不佳。
希望它能更好。
苹果必须花费很多精力来使其达到与VS相当水平。


Control + i 在 Swift 中可以使用。您认为代码格式化在 Objective C 中比 Swift 更好,有什么想法吗?只是好奇。 - Shawn J. Molloy
3
在 Swift 中,Control + i 只会缩进代码,而不会修复括号后面的空格等问题。 - Simon Bengtsson
7
“^” 只是表示“ctrl”键--为什么它们会被列为不同的快捷方式?两者都是完全相同的键组合。“^i” 重新缩进--它并不重新格式化。 - Zenexer

13

Xcode和Swift 2.0:对于每个文件,先使用Cmd-A,然后使用Ctl-I。 Ctl-I适用于所选内容,而Cmd-A则可以选择全部。只需注意不要在使用Ctl-A后意外删除您的所有源代码!


13

SwiftFormat 是一种流行的 Swift 代码格式化工具。它有一个 Xcode 扩展,可以从 Editor 菜单中访问。

以下是 SwiftFormat 自述文件中的引用:

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

SwiftFormat 不仅能够调整空格,还可以插入或删除隐式自身、删除多余的括号以及纠正许多其他偏离标准 Swift 语言习惯的问题。


2
有什么线索说明为什么这不被内置到Xcode中?这将比他们内置的大多数无用的缩进功能更有用。 - gnkdl_gansklgna

0

(我知道问题是关于Xcode的,但)个人认为使用AppCode与Xcode并用是另一个理由。

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

尽管AppCode的Swift支持还不完美,你仍然需要在两个工具中检查代码,但由于更好的导航和类似这样的功能,它仍然值得一用。


-2
在Xcode中格式化代码的命令是Ctrl + i,而不是Cmd + i。

-4

3
我认为这不是很高效——你的意思是说OP需要单独打开每个文件并在一个单独的程序中进行格式化吗? - Craig Otis
建议是不要重新打开它们。我工作的开发人员使用Sublime Text,而不是Xcode。 - user2961953
5
公平地说,OP 询问的是如何在 Xcode 中自动格式化代码。因此建议他在 Sublime Text 中这样做,要么是在分别打开它们,要么是切换编辑器。 - Craig Otis
3
我更关心的不是“公平”(对谁公平?),而是提供解决方案。有时候需要跳出思维定势。这个解决方案可能就属于那种情况。不过还是感谢你的意见。 - user2961953
我刚刚为Sublime安装了Swift插件,但似乎Sublime没有快捷键或菜单来进行格式化。 - Anh Bảy

-6

选择代码行,然后按下Ctrl+I


9
回答一个四岁孩子的问题时,如果已经有八个回答,请确保您的回答不是重复的。如果不是,请指出您的答案涉及哪个新方面。此外,按键组合的格式可以使用<kbd></ kbd>将每个键括起来完成。 - Jason Aller

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接