sublime中ctrl+shift+[无反应是因为光标未停在def/class声明行且右下角未显示python;需用developer: show scope name验证是否含meta.function.python,否则折叠失效。

Sublime 默认能折 Python 的 def 和 class,但光标必须停在它们的声明行上,且右下角必须显示 Python(不能是 Plain Text)。
为什么 Ctrl+Shift+[ 按了没反应?
这不是快捷键坏了,而是触发条件没满足:
- 光标必须落在
def foo():或class Bar:这类行上——停在函数体内部、空行、注释行或字符串里,命令直接静默失败 - 右下角状态栏必须显示
Python;若显示Plain Text,整个折叠系统不加载,Ctrl+Shift+[和Ctrl+K, Ctrl+0全部无效 - 用
Ctrl+Shift+P→Developer: Show Scope Name验证:光标在def行时,状态栏应含meta.function.python;只有source.python说明作用域未识别,折叠起点丢失
Ctrl+K, Ctrl+1 折的是“顶层结构”,不是“所有函数”
这个组合调用的是 fold_all 命令,参数为 level=1,它折叠的是语法定义中被标记为 level 1 的结构。在标准 Python 语法中,import、__all__ = [...]、顶层常量赋值通常属于 level 1,而 def 和 class 多数落在 level 2:
- 先确认
import os行能否被Ctrl+K, Ctrl+1折叠;如果能,说明层级正常 - 如果
def也被一起折了,大概率是语法包异常(比如用了Python Improved),导致meta.function降级到了 level 1 - 想只折函数?别依赖
Ctrl+K, Ctrl+1,改用fold_by_level命令(Ctrl+Shift+P输入后回车),从2开始试,Python 文件通常有效值是2或3
手动选中任意几行,绕过所有限制
当语法识别失效、装饰器跨行、docstring 紧贴 def 或你只想临时收起一段 JSON 配置/测试数据时,这是唯一 100% 可控的方式:
- 鼠标拖选目标行(支持空行、注释、日志、base64 字符串等任意内容)
- Windows/Linux 按
Ctrl+Shift+Alt+[,macOS 按Cmd+Ctrl+Option+[ - 侧边栏立刻出现独立三角图标,点击即可展开/收起,不影响其他自动折叠块
- 注意:该折叠仅存于当前会话,关闭文件即消失,不写入磁盘,也不依赖任何语法设置
# region 在 Python 里基本不可靠
原生 Python 语法不支持 # region 折叠,即使你写了也不会生效——这不是配置问题,而是语法定义里根本没启用 fold_comments 规则:
-
# region utils必须顶格写(前面不能有空格或 Tab),且配对的# endregion也必须顶格 - 即使加了
"fold_comments": true到用户设置,原生Python.sublime-syntax也没把comment.line.number-sign.python标记为可折叠 - 如果你坚持要用,得换插件(如
CodeFold)或手动修改语法文件,但容易误折、维护成本高
真正卡住人的,从来不是“怎么折”,而是“为什么这行明明是 def 却折不了”——八成是 meta.function.python 没出现在 show_scope_name 输出里,或者右下角还写着 Plain Text。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











