Xcode 9/10中的代码折叠更改

23

我知道在 Xcode9 的早期 Beta 版本中缺少代码折叠功能,现在可以使用 CMD+单击 来折叠整个方法。

但在 Xcode 8 中,我可以通过 Editor >> Code Folding >> Fold 折叠块级代码(例如单独的 if 语句),但在 Xcode 9 中,这会折叠整个方法。

是否有修复/设置可以恢复 Xcode 8 的功能?

3个回答

55

Xcode 10的更新内容如下:

Xcode 10增加了对代码折叠的支持,包括:

  1. 一个新的代码折叠条,显示编辑器中所有可折叠的多行代码块
  2. 编辑器中折叠代码的新样式,允许您编辑折叠代码所在的行
  3. 支持折叠任何用大括号括起来的代码块
  4. 支持从折叠条、结构化选择或以下位置折叠代码块:

菜单栏 ► 编辑器 ► 代码折叠 ► 折叠选项

enter image description here

看这张快照:

enter image description here


根据beta发布说明,Xcode 9 Beta5现在已经解决了在Xcode 9 beta 1中禁用代码折叠的问题: 已解决Xcode 9 beta 5 - IDE

以下是具体步骤:

  1. 按住键盘上的(command)按钮,并将鼠标光标移动/悬停在任何大括号(开始或结束)。它会自动突出显示、阻止区域。
  2. 保持(按住)(command)按钮处于按下状态,然后单击突出显示的区域。这将启用快速菜单弹出窗口,其中包含Fold选项。
  3. 从菜单列表中选择Fold。它将折叠您的代码并显示3个点,覆盖整个块。
  4. 现在,要再次展开代码块,请释放(command)按钮并单击折叠块的3个点。

为了更好地理解,请看下面的快照:

enter image description here


所有的键盘快捷键也都可以使用。

Fold                          ⌥ ⌘ ←      option + command + left arrow
Unfold                        ⌥ ⌘ →      option + command + right arrow
Unfold All                    ⌥ U        option + U
Fold Methods & Functions      ⌥ ⌘ ↑      option + command + up arrow
Unfold Methods & Functions    ⌥ ⌘ ↓      option + command + down arrow
Fold Comment Blocks           ⌃ ⇧ ⌘ ↑    control + shift + command + up
Unfold Comment Blocks         ⌃ ⇧ ⌘ ↓    control + shift + command + down
Focus Follows Selection       ⌃ ⌥ ⌘ F    control + option + command + F
Fold All                      ⌘ ⌥ ⇧ ←    command + option + shift + left
Unfold All                    ⌘ ⌥ ⇧ →    command + option + shift + left


Xcode菜单中的代码折叠选项:

菜单栏 ▶ 编辑器 ▶ 代码折叠 ▶ "这里是代码折叠选项列表"

这是参考快照:

enter image description here

Xcode快捷列表中的相同选项:

菜单栏 ▶ Xcode ▶ 首选项 ▶ 按键绑定 ▶ "这里是代码折叠快捷键列表"

enter image description here


2
感谢您详细的回复。然而,正如问题中所述,我知道如何折叠整个方法。我想知道的是,在方法内部折叠块的旧功能是否仍然可用。 - joffd
@joffd 对我来说也是同样的问题。我错过了旧功能,那种图形化的方式去做。 - Dominique Vial
如果在文件左侧给出一个箭头来折叠、展开大括号块,会更好。 - Pankaj
@Pankaj - 不明白你的意思,请说明。欢迎您分享您的想法来改进这个答案。 - Krunal
1
他们终于把它找回来了! - Reimond Hill

9
发行说明中指出该功能目前尚不受支持。

15
你一定是在开玩笑吧!谁会想到在支持了几十年并被每一个开发者日复一日地使用的代码折叠功能之后,将其废除。预测:由于视网膜显示器的出现,即使将字体缩小到1pt以鼓励开发者编写更小、更复杂的文件,并使用全新的语言(它的语法明天就会大变样,导致你的应用程序崩溃),苹果公司也会将每个文件呈现为单个页面。 - John Erck
1
Xcode 9 是全新使用 Swift 重新编写的。代码折叠功能会回归 ;) - Kaisp
Ok,太好了。希望你喜欢我的发牢骚。这很容易解决,我非常支持进步。 - John Erck
1
当然,@JohnErck - 顺便看看 devrant.io 哦 :D - Kaisp

7

你可以在Xcode 9中折叠单个if语句,但它会折叠整个if - (else)表达式。

将光标放在块内的任意位置,然后按下⌥⌘←

未折叠:

enter image description here

折叠:

enter image description here


7
仍然包含整个方法的折叠。 - joffd
不要选择任何内容,只需将光标放在受影响代码块的if和闭合}之间的任意位置。请查看编辑后的答案。 - vadian
2
我正在使用Objective-C编程,这会有影响吗?因为无论我把光标放在哪里,整个方法都会折叠。 - joffd
可能是因为Objective-C的行为不同,我认为这是一个错误。在Swift中,它按照描述的方式工作。 - vadian
3
我不喜欢这个变化。 - Jerome
显示剩余2条评论

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