ctrl+shift+[ 没反应是因为光标未停在可折叠结构起始行或状态栏显示 plain text;需确保语法识别正确(如 source.python)且作用域含 meta.function。

Ctrl+Shift+[ 没反应?不是快捷键失效,而是光标没停在可折叠结构的起始行,或右下角显示 Plain Text。
为什么 Ctrl+Shift+[ 按了没反应
这个快捷键只对「当前光标所在行是否为折叠起点」做判断,不看选区、不看缩进、不猜语法。常见失败原因:
- 光标停在
print("x")、空行、# 注释或字符串内部——这些行没有meta.function或meta.block作用域 - 右下角状态栏显示
Plain Text:所有折叠逻辑直接关闭,Ctrl+K, Ctrl+0同样静默失效 - 文件未保存、无扩展名(如
untitled),Sublime 无法自动关联语法 - 按了但没反应?先按
Ctrl+Shift+P→ 输入Developer: Show Scope Name,看状态栏是否含meta.function;只有source.python说明作用域未识别
Ctrl+K, Ctrl+0 到底在折什么
它调用的是 fold_all 命令,但不是“把所有缩进块都收起来”,而是按当前语言语法定义中声明的 scope depth 层级,逐级折叠已识别的结构:
-
Ctrl+K, Ctrl+0:强制折叠所有已识别的顶层可折叠块(如 Python 的def、class、if __name__ == "__main__":) -
Ctrl+K, Ctrl+1:只折scope depth = 1的结构(Python 中常是 import / 顶层变量 / 模块级 if) -
Ctrl+K, Ctrl+2:再往里一层(类内部方法、函数体内 for/if 块) - 操作必须分步:先按住
Ctrl+K松开,再按数字键;输错数字不会报错,只是静默失败
想只折函数,别动 if/class 怎么办
原生没有“仅函数”命令,Ctrl+K, Ctrl+0 会一并收走 if、class、顶层注释。真正可控的是 fold_by_level:
- 先确保一个
def行能被Ctrl+Shift+[正常折叠(验证作用域识别) -
Ctrl+Shift+P→ 输入fold_by_level→ 回车 → 依次试2、3、1(Python 文件通常从2开始) - 装饰器跨行(如
@decorator换行写在def上方)或 docstring 紧贴def行会导致跳过,加空行可修复 - 嵌套函数(如
def outer(): def inner():)需额外执行一次fold_by_level 3
任意几行都要收起来,不依赖语法怎么办
用 fold_selection——这是唯一绕过语法解析、缩进校验和 fold rules 的方式:
- 鼠标拖选任意行(包括 JSON 对象、base64 字符串、日志段落、空行)
- Windows/Linux 按
Ctrl+Shift+Alt+[,macOS 按Cmd+Ctrl+Option+[ - 侧边栏立刻出现独立三角图标,点击即可展开,不影响其他自动折叠块
- 该折叠仅存于当前会话,关文件即丢,不写入磁盘;
Ctrl+K, Ctrl+J(unfold_all)也不会还原它
真正容易被忽略的是:混用 fold_all 和 fold_selection 后,展开行为不一致;手动折叠的区域永远只认侧边栏点击,不响应全局展开命令。











