Sublime Text 不支持“折叠未选中代码”,仅提供结构折叠(如 Ctrl+Shift+[ 折叠光标所在语法块)和选区折叠(fold_selection);后者通过选中任意行后快捷键实现,不依赖语法,重启即失效。

Sublime Text 中没有“折叠未选中代码”的快捷键——这个需求本身在 Sublime 的设计模型里不存在,它不支持反向折叠(即保留选中部分、折叠其余全部),所有折叠命令都只作用于可识别结构或显式选区。
Ctrl+Shift+[ 只对光标所在行的起始结构生效
这个快捷键不是“折叠当前选中内容”,而是“折叠光标所在行所归属的最内层可折叠结构起点”。常见误解是把它当通用折叠工具,实际它有严格前提:
- 光标必须停在
def、function、class、if、{这类被语法定义为折叠起点的行上 - 右下角状态栏必须显示真实语言名(如
Python),不能是Plain Text - Python 文件若混用
Tab和Space缩进,def行可能被识别为普通文本,导致无响应
想临时收起任意几行?用 fold_selection 而非依赖语法
当你只想把一段日志、JSON 配置、测试数据块藏起来,又不想改语法或等插件,fold_selection 是唯一稳定路径:
- 鼠标拖选或多行选中(
Ctrl+L连续选行) - 按
Ctrl+Shift+[(Windows/Linux)或Cmd+Shift+[(macOS) - 折叠后左侧 gutter 出现独立三角图标,点击即可展开
- 该操作不依赖
meta.function或任何作用域定义,纯靠行号锚定,关文件即消失,但当前会话 100% 可控
别指望 Ctrl+K, Ctrl+0 实现“反向折叠”
Ctrl+K, Ctrl+0 是折叠所有顶层结构,不是“除选中区域外全部折叠”。它和 fold_selection 完全不同层级:
- 它调用的是
fold_all命令,行为由语法包定义,对 Python 是def/class,对 JS 是function/{块 - 它不会跳过你已手动
fold_selection的区域,也不会保留你选中的内容——它只管自己识别出的结构 - 输错数字(比如
Ctrl+K, Ctrl+9)无提示,静默失败;必须先按Ctrl+K松开,再按数字键
真正容易被忽略的点:Sublime 从不保存折叠状态,重启就全展开;所谓“未选中代码的折叠”本质是概念错位——它只有“结构折叠”和“选区折叠”两种模式,没有全局排除逻辑。如果硬要模拟,只能靠多次 fold_selection + 手动展开目标区域,但效率远低于直接滚动或使用 goto_definition 导航。


















