sublime汉化不影响代码折叠逻辑,折叠失效主因是作用域未识别、缩进混用或右下角显示plain text;需确保语言标识正确、缩进统一、光标位于def等起始行,并用show_scope_name验证作用域。

Sublime 汉化版本身不改变代码折叠逻辑——所有折叠行为完全由底层语法定义和作用域识别驱动,汉化仅影响菜单、提示文字等 UI 层,Ctrl+Shift+[、fold_by_level、show_scope_name 等核心机制与英文版完全一致。别被“汉化”二字误导,真正卡住你的从来不是语言,而是作用域没识别、缩进混用、或右下角显示 Plain Text。
为什么光标停在 def 行却按 Ctrl+Shift+[ 没反应?
这不是汉化导致的失效,而是 Sublime 根本没把这行识别为函数起点。关键看作用域:
- 光标放在
def my_func():行,按Ctrl+Shift+P→ 输入show_scope_name回车,状态栏必须出现类似source.python meta.function.python才算达标;如果只显示source.python,说明语法高亮已断链 - 右下角显示
Python是前提,显示Python Improved或Plain Text时,fold_by_level和Ctrl+K Ctrl+1全部静默失效 - 混用 Tab 和空格缩进(尤其 Python 文件)会导致解析中断,
meta.function.python层级无法生成,即使代码语法正确也折不了
想只收起所有函数,不碰 class、if、import?用 fold_by_level,但数字得实测
Ctrl+K Ctrl+1 不是“函数专用”,它折的是当前语法中被标记为 level 1 的所有顶层结构(常含 class、import、模块级 if)。真要干净只折函数,必须靠 fold_by_level 命令,并手动试出函数对应的实际层级数字:
- 先手动用
Ctrl+Shift+[折一个确认能折的函数,确保show_scope_name返回含meta.function -
Ctrl+Shift+P→ 输入fold_by_level→ 回车 → 尝试输入2(Python 官方语法通常是 2,JS 常是 3,但不同插件包可能不同) - 输错无提示,只是没反应;若部分函数没被折(如嵌套函数),说明它们属于更深层级(比如
level 3),需再执行一次fold_by_level 3
语法识别失败时最稳的兜底法:正则选中所有 def 行再折叠
当 show_scope_name 只返回 source.python,或右下角是 Plain Text,说明作用域链已断裂,fold_by_level 和快捷键全部不可靠。此时纯文本匹配反而是最快见效的方案:
-
Ctrl+F打开查找 → 正则模式勾选 → 输入^def\s|^class\s|^function\s(根据语言调整) - 点
Find All,所有函数/类定义行被选中(包括带装饰器的行) - 按
Ctrl+Shift+[—— Sublime 会对每个选中行单独触发一次折叠,等效于“对每个函数起点执行折叠” - 注意:此法不依赖作用域,但若注释里写了
def也会被误折,慎用于文档密集型文件
真正容易被忽略的硬性前提只有三个:右下角语言名必须是 Python 或 JavaScript 这类具体语言;缩进必须统一(全空格或全 Tab);光标必须落在起始标记行(def、function、{ 所在行),缺一不可。其他所有“为什么折不了”的问题,基本都绕不开这三处。











