在Xcode中修复代码缩进

133

当我开始编辑我的代码并添加for循环或if-then语句时,我的代码缩进就变得混乱了,因为之前的代码仍然保持其原来的缩进而没有自动调整。

在Visual Studio中,你可以突出显示代码并选择“格式化选定内容”来解决这些问题 - 在Xcode中有类似的功能吗?


这里是最佳解决方案:here - swiftBoy
可能是Xcode源代码自动格式化的重复问题。 - emlai
10个回答

259

Xcode 9及以上版本(参见下面的默认快捷键):

  1. 选择文本
  2. 右击
  3. 在弹出菜单中有一个“重新缩进选定内容”项

XCode 4版本需要多一步:

  1. 选择文本
  2. 右击
  3. 点击“结构”
  4. 在弹出菜单中有一个“重新缩进选定内容”和其他选项

或者使用默认快捷键:

  1. 选择文本
  2. 按下ctrl + i

1
在Xcode 5中,ObjC++似乎无法正常工作,“重新缩进选择”选项根本没有任何效果。 - Juan Campa
4
从 Xcode 9 开始,右键选项不再存在,但使用 ctrl + i 仍然有效。 - Ali Beadle
1
Ctrl + i ... 就这样 - mercury
1
哈哈,我误读了并尝试使用 command + i,结果重建了我的项目并要求我选择一个性能分析模板。 - Dronz
ctrl + i 确实是这样,我曾经困惑过它是 "i" 还是 "I" 还是 "|",但实际上是小写字母 "i",谢谢。 - Windo

83
  1. 选择文本
  2. 按下Control-I(默认的键盘快捷键)

1
最近在其他集成开发环境里花了太多时间,我的大脑似乎认为这是值得被清除的事情。 - Fernando Mazzon
1
在XCode 11中,Control-I对我没有任何作用。难道真的没有任何菜单选项吗? - Paul Slocum
3
@PaulSlocum 在我的 Xcode 11 中,控制+I 仍然有效。在“编辑器”>“结构”>“重新缩进”菜单中也可以找到该功能。 - Josh Brown
哈哈,一直在尝试使用IntelliJ的快捷方式,现在又回到Xcode很久了。 - Okhan Okbay

24

您可以在Xcode 11中自动完成此操作。


1
这太聪明了!谢谢! - radu122
2
我正在寻找这个答案。谢谢,兄弟。 - Bijender Singh Shekhawat

17
在Xcode 4.6.3中,选择编辑器 > 结构 > 重新缩进
快捷键:Control + I(其中'i'表示缩进)
此操作适用于当前所选文本。如果未选择任何文本,请选择编辑 > 全选(⌘+A),然后执行重新缩进。
(我更清楚地重申了其他答案)

7
有时候,仅仅设置Xcode全局偏好设置是不够的,因为项目设置会覆盖全局设置。您可以为一个具体的项目或者一个文件设置缩进。 在 导航窗格 中选择项目(或文件)。然后在 文件检查器 中进入 文本设置 部分,设置所需的制表符或空格缩进数目即可。

这个答案中包含了找到这些设置的截图:https://dev59.com/tHA75IYBdhLWcg3wlqET#47023275 - Stan James
这个答案包含了在哪里找到这些设置的截图:https://stackoverflow.com/a/47023275/59913 - undefined
这使我能够追踪为什么Xcode在全局配置为4个空格时使用_3_个空格进行缩进。 - freespace

6

这些解决方案可以将文本重新缩进到默认的xCode行为。要更改这些行为,请前往xCode(v.4)>首选项>文本编辑,然后到缩进选项卡。


3
正是我想要的...但也不完全是...我希望我能够告诉Xcode对C++类中的private:和public:进行缩进,而不是将它们与class关键字对齐在同一行,但我发现没有这样的选项。 - ArtOfWarfare

6

Xcode 9.2:

你可以选择文本并按下 ctrl + i 来重新缩进代码。


5

有不同的方法可以实现,但以下两种最简单:

  • 选择文本 + a):
  1. 使用快捷键:(control)^ + i

  2. 点击"编辑器" -> 点击"结构" -> 点击"重新缩进"


3
为了快速重新缩进整个文件:

+a

+x

+v

编辑:在 Xcode 11 中不再适用。


2
这与 cmd + a,ctrl + i 有什么不同吗? - Declan McKenna
1
在@tetrajen的解决方案之后,它将起作用:Xcode首选项>文本编辑>缩进>标记“粘贴时重新缩进”。 - Elad

2
你可以尝试我的扩展程序Swimat:https://github.com/Jintin/Swimat 它支持在选定的文本上进行格式化。
使用命令brew cask install swimat进行简单安装。

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