ctrl+shift+]仅展开光标所在最内层可折叠结构,需光标位于def/class/{等起始行且语言作用域正确;手动折叠区、装饰器跨行、作用域深度不匹配等均会导致失效。

Ctrl+Shift+] 只对光标所在块生效,不是“点哪折哪”
这个快捷键的逻辑是:找到光标当前所在的**最内层可折叠结构**,然后展开它。如果光标停在函数体中间某行、空行、注释里,或者右侧 gutter 没有 ▶ 图标,命令会静默失败,不报错也不提示。
常见失效场景包括:
- 光标未落在
def、class、function、{或if(带缩进块)等起始行上 - 右下角状态栏显示
Plain Text,而非真实语言名(如Python或JavaScript) - 按
Ctrl+Shift+P→ 输入Developer: Show Scope Name,状态栏只显示source.python,缺少meta.function类作用域
手动创建的折叠区(fold_selection)必须单独点击展开
用 Ctrl+Shift+Alt+[(Windows/Linux)或 Cmd+Ctrl+Option+[(macOS)选中后折叠的区域,和语法识别的折叠是两套机制。它们不会被 Ctrl+K, Ctrl+J 触发,也不会响应 Ctrl+Shift+] —— 唯一展开方式是鼠标点击左侧 gutter 的独立三角图标。
注意:
- 该折叠仅存于当前会话,关闭文件即消失
- 即使启用了
"fold_selected_regions": true,Ctrl+K, Ctrl+J仍默认不处理这类区域,除非你明确调用unfold_all命令并确认其作用域包含region - 侧边栏没三角图标?检查用户设置中是否启用了
"fold_buttons": true
想展开某个特定函数但光标不在起始行?先跳过去再操作
Sublime 不支持“鼠标悬停 + 展开”或“大纲视图点击展开”,所以得靠导航辅助定位:
- 按
Ctrl+P(Windows/Linux)或Cmd+P(macOS),输入函数名快速跳转到def xxx行 - 按
Ctrl+R(或Cmd+R)打开符号列表,选中目标函数后回车,光标自动落到起始行 - 确认右下角语言标识正确,且
Ctrl+Shift+[能正常折叠该函数(验证作用域识别有效) - 再按
Ctrl+Shift+]展开
如果函数因装饰器跨行、docstring 紧贴 def 行导致无法识别,加一行空行通常能修复 meta.function 作用域链。
fold_by_level 展开指定层级时数字不匹配?别猜,查 scope
Ctrl+K, Ctrl+2 这类命令展开的是作用域嵌套深度为 2 的所有块,但“2”具体对应什么,取决于当前语法定义。Python 中函数常在 level 2,JS 中箭头函数体可能在 level 3,而 Vue 单文件组件的 <script></script> 内部甚至需要 level 4。
实操建议:
- 把光标放在目标结构起始行(如
function foo()),运行Developer: Show Scope Name - 观察输出中
meta.function后面是否带.level-2或类似嵌套标记 - 若不确定,直接用命令面板:
Ctrl+Shift+P→ 输入fold_by_level→ 回车 → 尝试输入2、3、1,输错无反馈,没反应就换下一个 - 注意:
fold_by_level是展开命令,不是折叠;要展开 level 2 块,就输2,不是-2或其他前缀
真正容易被忽略的是:作用域深度不是缩进空格数,也不是文件里的物理层级,而是语法高亮器在解析时构建的 scope tree 深度——同一语言不同插件版本,这个值可能完全不同。











