Sublime Text 默认不自动删除成对括号,需用原生命令 Expand Selection to Brackets 先选中整对括号再删除;可绑定快捷键 Ctrl+Alt+B(Windows)或 Cmd+Alt+B(macOS)提升效率。

Sublime Text 默认不支持“选中括号时按 Delete 或 Backspace 自动删掉成对括号”,但可以通过原生功能或简单配置实现类似效果——关键不是装插件,而是理解它怎么处理括号匹配和删除逻辑。
为什么直接删括号经常只删一个?
Sublime 默认把 (、[、{ 视为“开启字符”,它们的闭合符()、]、} 是独立字符。光标在括号内时按 Backspace,只会删光标前一个字符;光标在左括号上按 Delete,也只删左括号本身——它不会主动感知“这对括号是配对的”。
真正起作用的是两个机制:括号高亮匹配(靠 match_brackets)和智能删除范围(靠 auto_match_enabled 和键绑定)。
-
auto_match_enabled控制是否自动补全右括号(如输(后自动加)),但它不影响删除行为 - 真正影响删除的是
bracket_highlighter插件(非原生)或 Sublime 原生的expand_selection命令 - 最可靠的方式:用快捷键先“选中整对括号”,再删
用 Ctrl+Shift+P + Expand Selection to Brackets 快速选中
这是 Sublime 原生支持、无需插件的方法。只要光标落在一对括号内(包括括号本身),就能一键选中整个括号块(含内容)。
- Windows/Linux:按
Ctrl+Shift+P,输入Expand Selection to Brackets,回车 -
macOS:按
Cmd+Shift+P,同样搜这个命令 - 执行后,如果光标在
if (x > 0) { console.log("ok"); }的任意位置,会选中从(到)或从{到}的完整范围 - 接着按
Delete或Backspace,就一次性删掉整对括号及其中内容
注意:它默认只匹配最近的一层括号。嵌套时(比如 func([a, b])),需多次触发该命令,逐层向外扩展选择。
给 Expand Selection to Brackets 绑定快捷键(推荐)
每次调 Ctrl+Shift+P 太慢。直接绑定到常用组合键更高效:
[
{ "keys": ["ctrl+alt+b"], "command": "expand_selection", "args": {"to": "brackets"} }
]
把这个加到你的 Preferences → Key Bindings – User 文件里(确保是 JSON 数组格式,前后有逗号注意)。之后按 Ctrl+Alt+B(Windows)或 Cmd+Alt+B(macOS)就能秒选括号。
- 别用
Ctrl+B:它已被设为 Build 系统占用 - 避免和
Ctrl+Shift+M(选中括号内内容,不含括号本身)混淆 - 如果同时装了
BracketHighlighter插件,它的select_scope命令行为略有不同,优先用原生命令更稳定
删括号但保留里面的内容?用 Ctrl+Shift+M 配合剪切
有时候你只想去掉括号,比如把 (x + y) 变成 x + y。这时不能直接删,得“摘掉壳”:
- 把光标放在括号内任意位置,按
Ctrl+Shift+M(Windows/Linux)或Cmd+Shift+M(macOS)——它会选中括号内的内容,不包含括号本身 - 按
Ctrl+X剪切 - 再按一次
Ctrl+Shift+M(此时会选中整对括号),按Delete - 最后
Ctrl+V粘贴回来
这个流程略繁琐,但纯原生、零依赖。如果高频使用,可以用插件(如 BracketPack)添加 remove_brackets 命令,不过多数人用上面三步法已足够。
真正容易被忽略的是:Sublime 的括号匹配依赖语法定义(.sublime-syntax 文件里的 bracket_rules)。如果你在自定义语言或 Markdown 中发现括号不匹配,不是设置问题,而是语法文件没声明括号对——这时候任何键绑定都无效。










