Sublime中为fold_by_level绑定快捷键需在用户按键映射(Preferences → Key Bindings – User)右侧JSON中添加规则,如{"keys": ["ctrl+alt+2"], "command": "fold_by_level", "args": {"level": 2}};Python通常用level 2,JS/TS用3;该命令不依赖语言,但依赖语法识别是否正确,输错数字无提示,仅静默失败。

怎么给 fold_by_level 绑定新快捷键
Sublime 默认没给 fold_by_level 分配快捷键,但它是控制折叠粒度最稳的方式,尤其想只折函数又避开 if/class 时。绑定的关键不是改全局配置,而是往用户按键映射里加一条规则:
- 打开 Preferences → Key Bindings(会分左右两栏,右侧是用户自定义)
- 在右侧 JSON 数组里加一项:
[ { "keys": ["ctrl+alt+1"], "command": "fold_by_level", "args": {"level": 1} } ] -
level值得实测:Python 文件通常填2,JS/TS 填3;输错不报错,只是没反应 - 避免和现有快捷键冲突:比如
ctrl+k前缀被 BracketHighlighter 等插件占用,ctrl+alt+数字更安全
为什么不能直接改 Ctrl+Shift+[ 的行为
Ctrl+Shift+[ 是原生命令 fold,它只响应“当前光标所在最小可折叠结构的起始行”,这个逻辑写死在 Sublime 内核里,无法通过用户配置修改语义。你只能:
- 重映射它到别的键(比如改成
ctrl+9),但行为不变 - 不推荐覆盖它——因为一旦语法识别失败(如显示 Plain Text),新键也会静默失效
- 真正要改的是“触发条件”,比如用正则选中所有
def行再批量执行fold,但这得靠插件或命令面板手动操作
自定义 fold_selection 快捷键要注意什么
fold_selection 是唯一不依赖语法、缩进、作用域的折叠方式,适合 JSON/YAML/日志等非代码文件,但它的快捷键有平台差异和 UI 限制:
- Windows/Linux 默认是
ctrl+shift+alt+[,macOS 是cmd+ctrl+option+[;若想统一,可在 Key Bindings 里覆盖 - 必须确保设置里启用了折叠按钮:
"fold_buttons": true(在 Preferences → Settings 用户配置中) - 该折叠仅存于当前会话,关闭文件即丢;
unfold_all不会还原它,得单独点击 gutter 三角图标 - 如果侧边栏没出现 ▶ 图标,不是快捷键问题,而是
fold_buttons被关了或主题禁用了折叠控件
别碰 syntax-specific 键映射,除非你真改过 .sublime-syntax
有人想为 Python 单独设一套折叠键,去改 Python.sublime-keymap。这基本没用:
- 该文件只对当前语言生效,但
fold_by_level和fold_selection本身是通用命令,不区分语言 - 真正影响折叠效果的是语法定义文件(
.sublime-syntax)里有没有foldingStartMarker,而不是快捷键位置 - 如果你改了 Python 语法文件,让
def的 scope 层级从 2 变成 1,那fold_by_level的数字就得跟着调——但这是高级定制,日常没必要
def 行却折不动,先按 Ctrl+Shift+P 输入 Developer: Show Scope Name 看状态栏输出,比翻键位配置有用得多。

















