Ctrl+Tab是MRU最近使用面板,非标签栏物理顺序;需手动绑定Ctrl+PageUp/Down到workbench.action.previousEditor/nextEditor实现左右切换。

Ctrl+Tab 不是标签页前后切换,而是 MRU 面板
VSCode 中 Ctrl+Tab 默认不按标签栏左右顺序跳转,它唤出的是「最近使用顺序」(MRU) 面板——顶部是当前文件,往下是最近激活过的编辑器,但:
• 预览模式下的文件(斜体标签)默认不进该列表,哪怕它还显示在标签栏上
• 刚关闭的文件可能仍留在 MRU 里,而新打开的文件反而排得靠后
• 拖拽调整过标签页位置、或用 Ctrl+1~Ctrl+9 切过组,都会重排 MRU 顺序
• 多编辑器组下,Ctrl+Tab 只扫当前组,不会跨组找
• Windows/Linux 上,某些系统级快捷键冲突还会让 Ctrl+Tab 直接切到其他应用窗口
真正按物理位置左右切换:Ctrl+PageUp / Ctrl+PageDown
这两个键 VSCode 默认未绑定任何命令,必须手动加到 keybindings.json 才能生效:
• 打开命令面板:Ctrl+Shift+P → 输入 “Preferences: Open Keyboard Shortcuts (JSON)”
• 在数组中添加两条规则:
[{"key":"ctrl+pageup","command":"workbench.action.previousEditor"},{"key":"ctrl+pagedown","command":"workbench.action.nextEditor"}]• 注意别用已废弃的
workbench.action.openPreviousEditor,VSCode 1.80+ 会静默忽略• 这两个命令严格按当前编辑器组内标签页的**物理位置**(从左到右)切换,无视预览状态
• macOS 用户无法用
Cmd+PageUp——系统常拦截该事件,改用 Cmd+Shift+[ 或 Cmd+Shift+] 更可靠
Ctrl+1~Ctrl+9 不是切第 N 个标签页,而是切第 N 个固定标签
这个组合键容易被误解为“跳到第 N 个打开的文件”,实际逻辑是:
• 它只对**已固定**(非预览态)的标签页编号,斜体的预览标签不参与计数
• 如果第 3 个位置是预览态,Ctrl+3 会跳到第 4 个固定标签页,而不是停在原地
• 数字对应的是物理位置索引,拖拽调整顺序后,索引也跟着变
• 更关键的是:Ctrl+1~Ctrl+9 在多编辑器组场景下,其实是切「第 N 个编辑器组」,不是第 N 个标签页——如果你只开了一个组,Ctrl+2 就永远无效
移动当前标签页位置:用 workbench.action.moveEditorLeftInGroup
VSCode 没有原生“向左/右移动当前标签页”的快捷键,但内置了可绑定的命令:
• workbench.action.moveEditorLeftInGroup(向左移)
• workbench.action.moveEditorRightInGroup(向右移)
• Windows/Linux 默认绑定为 Ctrl+Shift+PageUp / Ctrl+Shift+PageDown,但常被输入法或笔记本 Fn 键拦截
• macOS 上需确认是否启用了“将 F1、F2 等键用作标准功能键”,否则要配合 Fn 键使用
• 这两个命令有个硬性前提:当前标签页必须已固定(双击过或保存过),预览态标签无法移动
• 绑定前务必检查 keybindings.json 是否被插件(如 IntelliJ IDEA Keybindings)覆盖或禁用


















