一个键,两个方向。配置写起来简单,但背后的故事比想象中曲折。
不知道有多少键盘党跟我一样,写代码的时候手坚决不想离开键盘。
最理想的状态就是按下同一个快捷键,在代码编辑器和下方终端面板之间来回切换焦点。敲完代码一键切终端跑命令,执行完再一键切回写代码,丝滑不碰鼠标。
最初的方案:用反相的 when 条件实现“一键双用”
很早的时候,社区vscode大佬就摸索出一套自定义键盘绑定方案。
核心思路是利用 when 条件的“反相”逻辑,让同一个按键 `Ctrl + ``(反引号)根据当前焦点状态执行不同的命令:
- 如果当前不在终端,就聚焦终端
- 如果现在已经是终端焦点,就切回编辑器
这套配置最早在 VS Code 1.4 版本就可以跑得好好的,不少键盘玩家直接把它当成标配。
1.5 版本之后,它罢工了
可版本升级到 1.5 之后,怪事发生了。
升级完之后这个切换快捷键直接罢工。一时间 GitHub 的 issue 区直接炸锅,一堆开发者过来反馈 bug。
大家贴出来自己的 keybindings.json,反复确认配置没有写错,干净全新安装 VS Code 也复现——说明不是个人环境问题。
vscode开始接手修复这个 bug。
修好之后,新问题又来了
修好之后,新的问题又来了:从终端切回代码编辑器,该回到哪一个编辑器分组?
这里就遇到了分屏的大坑。因为vscode很早就支持编辑器分组了。
如果你只开单栏编辑窗口还好,一切正常。一旦你把编辑器拆成左右两组(多 Editor Group 分屏),旧命令 focusFirstEditorGroup 永远只会跳到第一个编辑器分组。
假设你刚刚正在右边第二组窗口写代码,按下快捷键从终端切回去,光标直接蹦回最左边第一个编辑器——直接跳错地方,整个人瞬间懵掉。
新的命令诞生了
于是 vscode老粉希望官方新增一条命令:聚焦最近一次使用过的编辑器分组,而不是死板地跳回第一个分组。
后面vscode还真的听进去了,于是诞生了这条关键指令:
workbench.action.focusActiveEditorGroup
最终完美版配置
时至今日,这套切换快捷键配置依然可以直接使用:
[
{
"key": "ctrl+`",
"command": "workbench.action.terminal.focus",
"when": "!terminalFocus"
},
{
"key": "ctrl+`",
"command": "workbench.action.focusActiveEditorGroup",
"when": "terminalFocus"
}
]
当然vscode也保留着workbench.action.openLastEditorInGroup和workbench.action.focusFirstEditorGroup,萝卜青菜,各有所爱吧,还是有不少人的用到这个配置。
下面就来实际使用一下
首先我们初始的时候,界面只有编辑器

接着我们按下快捷键ctr  再按一次ctrl, 终端就会消失 
这个快捷键的价值不在于“一个键干两件事”有多酷,而在于它解决了一个很具体的体验问题:焦点切换不应该让你思考“我现在在哪”。
按一下,去终端;再按一下,回到你刚才写代码的那个位置。不管中间有没有分屏,不管你在哪个编辑器分组,它都记得你最后一次待的地方。
对于键盘党来说,这种“不用想”的顺畅感,才是快捷键配置的终极目标。






