Sublime Text 不支持多段不连续代码同时折叠,Ctrl+Shift+[ 仅作用于首个光标所在行的最内层可折叠结构,多光标被忽略;fold_selection 也只支持连续选区,无法合并分散光标;#region 单独使用无效,需成对且语法支持。

Sublime Text 原生不支持“多段不连续代码同时折叠”——这不是快捷键没配对,而是功能根本不存在;所有声称能一键选中跳行并折叠的插件,实际都只处理第一个光标或破坏原有结构。
Ctrl+Shift+[ 对不连续行完全无效
这个快捷键只响应光标所在行的**最内层可折叠结构起点**(如 def、class、{ 行),且一次只能作用于一个位置。你按住 Ctrl 点击三行首加了多个光标,再按 Ctrl+Shift+[,它只会尝试折叠第一个光标所在行的块,其余光标被忽略,也不会报错。
- 现象:点击第2、第7、第15行后按
Ctrl+Shift+[,只有第2行折叠,其他两行无反应 - 原因:命令设计就是单点触发,不遍历多光标;Sublime 的折叠系统没有“批量作用于所有光标”的底层接口
- 替代思路:想折这三段,必须分别把光标移到每段起始行,单独按一次
Ctrl+Shift+[
手动选区折叠是唯一可靠方案,但不能跨段
原生的 fold_selection 命令(快捷键 Ctrl+Shift+Alt+[)确实能折任意选中内容,但它只接受**连续选区**——鼠标拖选、Ctrl+L 连续行、甚至列选(Alt+拖拽)都行,但无法把第2行和第7行一起框进同一个选区。
- 如果你强行用 Ctrl+鼠标点击三处再按
Ctrl+Shift+Alt+[,它只会折叠最后一个光标所在行的单个字符(或空行),不是你想要的“三段收起” - 该命令本质是“把当前选中文字区域当做一个折叠单元”,而多光标 ≠ 多选区;每个光标独立存在,没有“合并为一个逻辑选区”的机制
- 真正能用的场景:临时收起一段日志、一整块配置 JSON、或函数体里连续的注释段
别信 #region / // region 能解决多段问题
即使你在第2、第7、第15行各自写上 #region,再启用 "fold_comments": true,Sublime 也**不会自动识别它们为独立折叠点**——语法定义要求 #region 必须配对出现(#region + #endregion),且中间不能有语法中断(如空行、缩进不一致)。单行 #region 不会被解析为折叠起点。
- 常见失败模式:在每段开头加
#region utils,结果侧边栏没三角图标,Ctrl+Shift+[也无反应 - 根本原因:Python 语法文件没定义
#region的foldStartMarker规则;即使 JS 语法支持/* region */,也只认成对块,不认孤立标记 - 更现实的做法:对每段单独加
#region和#endregion,确保它们包裹完整逻辑块,再检查 scope 是否含comment.line.number-sign.python
最容易被忽略的是:所谓“多段同时折叠”,本质上是在挑战 Sublime 折叠系统的底层模型——它基于作用域嵌套(scope hierarchy)或连续文本范围(selection range),而非用户意图的逻辑分组。真要管理分散代码块,与其折腾折叠,不如用书签(Ctrl+F2)+ 跳转(F2),或者拆成小文件再用项目侧边栏组织。


















