Sublime Text 无原生“一键折叠非激活区域”功能,因其折叠系统仅识别语法结构或缩进层级,不感知光标、选区或视口状态;可行替代方案为手动聚焦后折叠再展开单个块,或全局折叠后选择性展开,但均受限于语法正确性与操作效率;fold_selection 可自由折叠任意选中代码段,但属会话级且不随文件保存。

Sublime Text 里没有“一键折叠非激活区域”的原生功能
Sublime Text 的折叠系统不区分「激活/非激活区域」,它只识别语法结构(如 def、class、{})或缩进层级,然后按作用域深度统一处理。所谓“非激活区域”——比如当前没光标、没选中、没滚动到视口内的代码块——Sublime 压根不感知,更不会提供针对性命令。
想实现类似效果,只能靠组合策略绕过限制
实际能接近这个需求的路径只有两条:手动聚焦+折叠当前,或全局折叠后选择性展开。但每条都有硬约束:
-
先聚焦再折:把光标移到你想保留展开的函数/类开头行(如
def main():),按Ctrl+Alt+[(Windows/Linux)或Cmd+Option+[(macOS)只折该块;再用Ctrl+K, Ctrl+0折全部,最后用Ctrl+Shift+]展开那个已聚焦的块——但仅限单个目标,且依赖语法正确识别 -
先全折再反向操作:执行
Ctrl+K, Ctrl+0折所有顶层结构,然后逐个把光标移到需保留的块首行,按Ctrl+Shift+]展开;注意:如果文件里有大量同级结构(如十几个def),这比不折还慢 - 任何方式都要求右下角状态栏显示真实语法名(如
Python),不是Plain Text;否则Ctrl+K, Ctrl+0直接无响应
fold_selection 是唯一能脱离语法、自由划定“非激活区”的手段
如果你说的“非激活区域”其实是“当前不想看的任意一段代码(哪怕只是几行日志或 JSON 配置)”,那 fold_selection 是最贴近的解法:
- 鼠标拖选你认为“非激活”的代码段(支持跨函数、含空行、甚至纯注释)
- 按
Ctrl+Shift+Alt+[(Windows/Linux)或Cmd+Ctrl+Option+[(macOS) - 侧边栏立刻出现独立折叠按钮,点击即可收起——它完全绕过语法解析,也不影响其他自动折叠块
- 但注意:这种折叠是会话级的,关文件就丢;而且
Ctrl+K, Ctrl+J不会还原它,得单独点侧边栏箭头
别指望配置项或插件自动识别“活跃区域”
目前没有任何稳定插件(包括 Origami、CodeFolding)能基于光标停留时长、编辑频率或视口位置动态判断哪些区域该留开、哪些该折叠。Sublime 的折叠机制是静态的、声明式的——它只认语法 scope 和用户显式指令。试图让编辑器“猜你正在关注哪块”属于 IDE 级能力(如 VS Code 的 Peek 或 JetBrains 的 Structure View),Sublime 没这层抽象。


















