最稳的方式是用命令面板执行 select between brackets:光标落在{或}上即可精准选中内部内容(不含括号),它不依赖语法树,对json/js/ts/python等均稳定有效。

直接说结论:最稳的方式不是靠快捷键连按,而是用命令面板执行 Select Between Brackets ——只要光标落在 { 或 } 上,它就精准选中中间所有内容(不含括号本身)。
为什么 Ctrl+Shift+→ 有时选不中大括号内内容
这个快捷键本质是 editor.action.smartSelect.expand,它依赖语法树而非括号字面量。常见失效原因包括:
- 光标没在括号“内部”,而是在
{或}字符上——此时第一次按只会选中那个符号 - 文件语言模式错误(右下角显示
Plain Text),VSCode 不解析括号结构 - 代码含 JSX、模板字符串或未闭合的注释,语法解析器跳过该层级
- 被 Vim、Auto Close Tag 等插件劫持了快捷键绑定
选中 {} 内容(不含括号)的可靠操作
当你要剪切、重命名或格式化对象/函数体内部逻辑时,推荐以下步骤:
- 把光标移到任意一个
{或}字符上(必须落在字符上,不能是空格) - 按
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS)打开命令面板 - 输入
Select Between Brackets,回车执行 - 它会立即选中两个配对括号之间的全部内容,不含括号本身
这个命令不依赖语言服务,只认 ASCII 括号配对,对 JSON、JS、TS、Python 等都稳定有效。
想连 { 和 } 一起选中?用 Expand Region
如果你要整体删除、移动或包裹整个代码块(比如加个 if (true) { ... }),需要包含括号:
- 光标停在
{或}上,按Shift+Alt+→(Windows/Linux)或Shift+Option+→(macOS) - 它会立刻选中从该括号到其配对括号的完整区域(含两端)
- 连续按可逐层向外扩展:从内层对象 → 外层函数 → 整个模块
注意:这个操作叫 Expand Region,比默认的 smartSelect.expand 更贴近括号层级,但在 JSX 的 {...} 插值中可能被当作普通文本处理。
真正容易被忽略的是:括号是否“成对”和“可识别”,比快捷键本身更重要。哪怕绑定了最顺手的键位,只要当前文件是 Plain Text 模式,或者存在 { /* unclosed 这类语法污染,所有基于括号的选中都会静默失败。先看右下角语言标识,再动手。











