Sublime快速层次化选中当前大括号内所有内容
SublimeText中选中大括号内内容的快捷键因光标位置与语法模式影响易失效。选中不含括号的内容可移光标至{后按Ctrl+Shift+M,嵌套时逐层扩展。需包含括号时自定义expand_selection命令更可靠。Ctrl+Shift+Space按作用域选中,适合JSX场景。
Sublime Text 里选中大括号内内容的快捷键,很多人第一反应就是 Ctrl+Shift+M(或者 macOS 上的 Cmd+Shift+M)。但实际用起来,这个快捷键经常“罢工”——按下去一点反应都没有。问题出在哪?又该如何高效选中括号块?下面整理几个核心技巧,顺便把常见坑点也一并讲清楚。

按下 Ctrl+Shift+M 没反应?先确认光标是否落在有效作用域内
这个快捷键的触发条件其实很严格。你必须把光标放在一个有效的语法作用域内,并且 {} 需要成对闭合,它才会工作。否则按下就是石沉大海。常见失效场景包括:
- 光标停在了
}的右边、{的左边,或者干脆在代码块外面。 - 文件右下角显示的是
Plain Text,而不是JavaScript、Python这类支持语法作用域解析的语言模式。 {}本身不闭合(比如漏写了另一半),或者它被包裹在字符串里(如"{ x: 1 }")或注释里(如// { a: b })。- macOS 用户不小心按了
Ctrl+Shift+M,实际应该是Cmd+Shift+M。
只想选内容(不含 { 和 })?直接用 Ctrl+Shift+M
把光标移到任意一个 { 字符上,再按 Ctrl+Shift+M(Windows/Linux)或 Cmd+Shift+M(macOS),就能精准选中该对 {} 内的全部内容,而且不含括号本身。嵌套时,每按一次就往外扩一层:比如光标在 {x: {y: 1}} 的 y: 1 上,第一次选中 y: 1,第二次选中 x: {y: 1}。它不跳层,也不会误扩到注释或字符串里,边界非常干净。如果光标已经在括号内部(不是括号字符本身),也能工作,但更推荐先挪到 { 上再按,触发更稳。
要连 { 和 } 一起选?别拼组合键,改用 expand_selection 命令
原生的 Ctrl+Shift+M 设计就是只选内容。如果硬凑 Ctrl+Shift+→ 来补括号,虽然可行,但在换行、缩进不齐时很容易误触。更可靠的做法是:在用户键位文件(Preferences → Key Bindings)里加一条自定义快捷键:
{ "keys": ["ctrl+alt+b"], "command": "expand_selection", "args": {"to": "brackets"} }
- 按
Ctrl+Alt+B后,直接选中完整的{...}块(含括号)。 - 它依赖最近的括号对,不严格绑定光标所在字符,容错率更高。
- 注意:如果当前有多个嵌套
{},它默认选最内层那一对。
Ctrl+Shift+Space 是替代方案,但逻辑不同
这个命令叫 expand_selection,目标是“当前作用域”,而不是括号层级。在 JSX 或 Vue 模板里处理 {state} 时更稳,因为它是按语法 scope 而非括号匹配来选中的。第一次可能选最小表达式(比如 state),第二次才选中 {state},第三次可能跳到外层函数体——这并非 bug,而是设计如此。对破损括号更宽容,但边界模糊:在纯 JSON 或 Python 字典里,可能不如 Ctrl+Shift+M 精确。如果误扩多了,按 Ctrl+U 退回上一级,比方向键微调更干净。
真正卡住的地方往往不是快捷键记不住,而是光标位置和语法模式这两个隐性条件没被满足。尤其在 Vue/JSX 文件里,如果右下角显示的是 HTML 而非 Vue Component,{} 就不会被当作 JS 表达式解析——这时候任何括号选中命令都会失效。
