Ctrl+K, Ctrl+0 默认折叠全部但常失效,因其依赖语法识别且不报错;推荐改用 fold_by_level 或 fold_selection 自定义折叠,并开启 fold_buttons 显示侧边栏按钮。

Ctrl+K, Ctrl+0 是默认“一键折叠全部”,但常失效——先确认它是否真该用
不是所有场景都适合 Ctrl+K, Ctrl+0(Windows/Linux)或 Cmd+K, Cmd+0(macOS)。它调用的是 fold_all 命令,会无差别折叠所有语法识别出的顶层结构:Python 里的 def、class、if __name__ == "__main__":、甚至模块级注释块和 __all__ = []。如果你只想看函数签名,这个命令反而干扰阅读。
它失效时几乎从不报错,而是静默跳过——常见原因包括:
- 右下角状态栏显示
Plain Text或空白 → 折叠规则根本未加载 - 文件没扩展名(如临时粘贴的代码片段),Sublime 无法自动关联语法
- Python 文件混用
Tab和Space缩进 → 语法解析中断,meta.function作用域丢失 - 插件劫持了
Ctrl+K前缀(如BracketHighlighter)→ 临时禁用插件验证
想真正自定义快捷键?别改默认键位,直接绑定命令到新组合
Sublime 不鼓励覆盖原生快捷键(尤其 Ctrl+K 系列),容易和语言包、插件冲突。更稳妥的做法是:在用户按键映射里新增一条,绑定你真正需要的行为。
例如,为「只折叠所有函数」添加快捷键(以 Python 为例):
打开 Preferences → Key Bindings(右侧为用户配置),加入:
[
{
"keys": ["ctrl+alt+f"],
"command": "fold_by_level",
"args": {"level": 2}
}
]
注意几点:
-
level值需实测:Python 多数为2,JS 常为3,输错无提示,没反应就换一个 - 必须确保函数已被识别为
meta.function:光标停在def行,按Ctrl+Shift+P→ 输入Developer: Show Scope Name,状态栏应含该字样 - 装饰器跨行(如
@decorator换行写在def上方)会导致识别失败,加空行可修复
手动选中 + 折叠,才是最稳的“自定义区域”方案
当语法识别靠不住(比如 JSON 配置、日志段、Vue 单文件组件中的 <style></style> 块),fold_selection 命令不依赖任何作用域,纯靠你选中什么就折什么。
你可以给它配个快捷键,比如:
[
{
"keys": ["ctrl+alt+s"],
"command": "fold_selection"
}
]
使用时:
- 鼠标拖选 /
Ctrl+L连续选行 / 正则Find All匹配多行(如^def\s) - 按
ctrl+alt+s,立刻收起所选区域 - 折叠后左侧 gutter 出现独立 ▶,点击即可展开,关文件即消失,不污染语法状态
这招绕过了所有语法解析、缩进校验、作用域嵌套判断,适合临时藏一段测试数据或大段注释。
侧边栏按钮不显示?不是快捷键问题,是设置没开
很多人以为折叠功能坏了,其实是左侧折叠按钮被默认隐藏了。它和快捷键无关,只受两个设置控制:
在 Preferences → Settings(右侧)中加入:
"fold_buttons": true, "fade_fold_buttons": false
这两项生效前提:
- 右下角必须显示真实语言名(如
Python),Plain Text下按钮不会生成 - 按钮只对语法识别出的结构出现(如
def、class、{),纯缩进块(如无大括号的 Python 函数体)没有按钮,只能靠快捷键 -
"fade_fold_buttons": false必须显式设为false,否则图标只悬停才显示
折叠状态从不跨会话保存,重启 Sublime 就全展开——这点最容易被忽略,官方至今没提供 "fold_on_open": true 这类选项。











