VSCode默认关闭标签后激活最近使用的编辑器(MRU),要改为激活左侧或右侧相邻标签,需设置"workbench.editor.closeTabBehavior": "left"或"right",该值按标签栏从左到右视觉顺序生效,不适用于预览标签或多根工作区异常场景。

关闭当前标签后默认激活哪个标签?
VSCode 默认行为是:关掉一个标签页后,焦点会回到「上一个最近使用的编辑器」(MRU),而不是物理位置相邻的标签。这意味着你左边或右边的标签不一定会被激活——哪怕它就在旁边,只要不是你最近点过的,就不会自动跳过去。
怎么改成关标签后激活左侧/右侧相邻标签?
VSCode 没有直接叫“激活左侧标签”的设置项,但可以通过修改 workbench.editor.closeTabBehavior 控制策略。它有三个可选值:
-
"left":关闭后激活左边相邻标签(如果存在) -
"right":关闭后激活右边相邻标签(如果存在) -
"mostRecentlyUsed"(默认):回到 MRU 列表里的上一个
操作路径:打开设置(Ctrl+,),搜索 closeTabBehavior,下拉选择 left 或 right;或者直接在 settings.json 里加一行:
"workbench.editor.closeTabBehavior": "left"
注意:left 和 right 是按标签栏**从左到右的视觉顺序**判断的,不是编号、也不是打开顺序。如果当前标签是最左一个,关掉后会 fallback 到 MRU 行为(不会报错,也不会静默失败)。
为什么设了 "left" 还是跳到了奇怪的位置?
常见原因有三个:
- 当前编辑器组里只剩一个标签页 → 没有“左侧”可激活,自动退回到 MRU 逻辑
- 右侧有预览标签(比如单击资源管理器打开的未固定文件)→ 它们不算进物理位置计算,会被忽略
- 你用的是多根工作区(multi-root workspace),且某些文件夹被
files.exclude或search.exclude掩盖 → VSCode 可能无法正确识别其标签位置关系
验证是否生效:打开至少三个文件(A-B-C),确保都已固定(双击打开,非预览),然后把焦点放在 B 上,按 Ctrl+W 关闭,看焦点是否落到 A(设 left)或 C(设 right)。
和 workbench.editor.focusRecentEditorAfterClose 有什么区别?
这个设置控制的是「关闭动作完成之后,是否强制把焦点移回编辑器区域」。它和激活哪个标签无关,只影响焦点是否卡在侧边栏、终端或搜索框里。如果你关完标签发现光标不见了,大概率是它被关掉了。建议保持开启:
"workbench.editor.focusRecentEditorAfterClose": true
真正决定「激活谁」的,只有 closeTabBehavior。两者配合使用才完整:前者选人,后者确保人能被聚焦。


















