Ctrl+Shift+[(Win/Linux)或Cmd+Option+[(macOS)仅对光标所在行的最内层语法起始行(如def、function、{、<div>等)生效,停在函数体内、空行、注释或Plain Text模式下均无效;可靠展开需将光标移回折叠起点行再执行。

Ctrl+Shift+[(Windows/Linux)或 Cmd+Option+[(macOS)是唯一能快速折叠光标所在代码块的原生快捷键,但它只对“光标所在行的最内层合法折叠起点”生效,不是任意位置都管用。
为什么光标停在函数体里按 Ctrl+Shift+[ 没反应?
这个快捷键不看缩进、不看选区、不猜结构——它只响应被语法定义明确标记为 foldingStartMarker 的行。常见可触发位置包括:
-
def、class、if、for、while等带冒号和缩进块的 Python 行 -
function、if (、{开头的 JavaScript 行(注意必须是块开始,不是单行语句) -
<script>、<div>等成对 HTML 标签的起始行 - 三引号字符串(
"""或''')开头行(Python docstring)
光标停在 print("hello") 这类函数体内、空行、注释行、字符串中间,或右下角状态栏显示 Plain Text,都会静默失败。
如何确认当前行是否真的可折叠?
别靠猜,用 Sublime 自带的诊断命令验证作用域识别是否到位:
- 把光标放在你想折的行(如
def foo():) - 按
Ctrl+Shift+P(macOS 是Cmd+Shift+P),输入Developer: Show Scope Name回车 - 看状态栏:如果出现类似
source.python meta.function.python,说明函数作用域已识别;若只有source.python,说明语法包没加载或被插件干扰
常见干扰项:Python Improved 等第三方语法包可能未定义 meta.function,导致折叠点丢失。
折叠后想展开,但点了左侧箭头没反应?
这不是 UI 失效,而是折叠状态与光标位置强绑定:
- 鼠标点击 gutter 三角图标,只会展开该块,但光标不会自动跳入——你得手动把光标移回已折叠行再按
Ctrl+Shift+] - 如果光标在折叠块内部某行(比如已折叠函数里的第 3 行),按
Ctrl+Shift+]会尝试展开“该行所属的最内层块”,但若那行已被收进折叠区域,Sublime 找不到上下文,就静默忽略 - 真正可靠的展开方式:把光标放回原始折叠起点行(如
def foo():那行),再按Ctrl+Shift+]
侧边栏图标默认常驻需手动开启:"fold_buttons": true,否则即使折叠成功,你也看不到 ▶。
临时收起几行无关代码,又不想改语法设置?
用 fold_selection 命令,它完全绕过语法解析,纯靠选区驱动:
- 鼠标拖选或多行选中(
Ctrl+L连续选行也行) - 按
Ctrl+Shift+[(Windows/Linux)或Cmd+Shift+[(macOS)——注意不是Cmd+Option+[
这个操作生成的是独立折叠节点,左侧 gutter 出现单独三角图标,和语法折叠互不干扰。关闭文件即消失,不污染源码,也不依赖任何语言配置——适合藏日志、JSON 片段、测试数据这类“非结构化内容”。
最容易被忽略的一点:折叠状态是视图级缓存,不是文件属性。重启 Sublime、切换标签页、甚至偶尔焦点丢失,都可能导致部分折叠意外展开,尤其当文件混用 Tab/Space 缩进时,语法解析一断,连带所有自动折叠点全部失效。

















