Sublime中快速折叠代码需按目标选择操作:函数折叠须光标停在def/function行且语法识别正常;fold_by_level按层级(如Python用2、JS用3)可精准折函数;选中任意行后Ctrl+Shift+[可手动折叠;侧边栏按钮需设置"fold_buttons": true。

Sublime 里“快速折叠代码”不是靠一个万能快捷键,而是得看你想折什么:函数?所有顶层结构?还是随便几行都行?不同目标对应不同操作,错用就静默失败。
Ctrl+Shift+[ 折不了?先确认光标和语法
这个快捷键只在光标停在可折叠结构的起始行时才生效,不是点进函数体里按就能折。Python 必须停在 def func(): 那行,JavaScript 得停在 function foo() { 或 const bar = () => { 行。停在空行、注释、print() 那一行,它直接没反应。
同时右下角状态栏必须显示 Python、JavaScript 等真实语言名,显示 Plain Text 就等于关掉了所有语法级折叠。
- 验证是否识别成功:光标停在
def行,按Ctrl+Shift+P→ 输入Developer: Show Scope Name,状态栏应含meta.function,否则折叠起点丢失 - 混用 Tab 和 Space 缩进会导致
def行被识别为普通文本,建议统一用空格 - 某些插件(如旧版 Python Improved)会干扰 scope 解析,临时禁用可测试是否冲突
想一键收起所有函数?别用 Ctrl+K, Ctrl+0
Ctrl+K, Ctrl+0 是 fold_all,它不区分语义,会把 class、顶层 if、__all__ = []、甚至模块级 docstring 全折进去,函数签名反而被埋了。
真正只折函数的路子是 fold_by_level 命令,但它不固定数字,得实测:
- 先手动用
Ctrl+Shift+[折一个函数,确认左侧 gutter 出现 ▶,说明函数块已被识别 - 按
Ctrl+Shift+P→ 输入fold_by_level→ 回车 → 依次试2、3、1 - Python 文件通常从
2开始有效;JS 常是3;输错无提示,没反应就换下一个 - 装饰器跨行(如
@decorator换行写在def上方)或 docstring 紧贴def行,会导致跳过,加空行可修复
任意几行都要折?手动选中 + Ctrl+Shift+[ 最稳
当语法不支持、文件是 JSON/Markdown、或你只想临时藏一段日志、配置、测试数据时,fold_selection 是唯一不依赖语法、不改设置、不装插件的方案。
- 鼠标拖选或多行选中(
Ctrl+L连续选行) - 按
Ctrl+Shift+[(Windows/Linux)或Cmd+Shift+[(macOS) - 折叠后左侧 gutter 出现独立三角图标,点击即展开,当前会话 100% 可控
- 注意:
unfold_all(Ctrl+K, Ctrl+J)不会恢复这类手动折叠,得单独点开或重复按Ctrl+Shift+]
侧边栏没三角图标?不是功能坏了,是设置没开
即使快捷键全有效,左侧 gutter 默认也不常驻折叠按钮——它只悬停才显示,或者干脆不显示。
打开 Preferences → Settings,在右侧用户设置中加这两行:
"fold_buttons": true "fade_fold_buttons": false
注意:
- 按钮只对语法识别出的结构生成(如
def、class、{),纯缩进块(如无大括号的 Python 函数体)不会出按钮 - 如果加了仍不显示,先检查右下角是不是
Plain Text,再确认没被插件覆盖成"fold_buttons": false - 折叠状态从不保存到磁盘,重启 Sublime 就全展开;目前没有原生配置项能开启“fold_on_open”

















