欢迎光临
我们一直在努力

VSCode如何实现一个快捷键在终端与编辑器之间来回横跳

一个键,两个方向。配置写起来简单,但背后的故事比想象中曲折。

不知道有多少键盘党跟我一样,写代码的时候手坚决不想离开键盘。

最理想的状态就是按下同一个快捷键,在代码编辑器和下方终端面板之间来回切换焦点。敲完代码一键切终端跑命令,执行完再一键切回写代码,丝滑不碰鼠标。

最初的方案:用反相的 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 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/fb1ea046ba45481dbd04c43cc53fdb16.png) 再按一次ctrl, 终端就会消失 在这里插入图片描述

这个快捷键的价值不在于“一个键干两件事”有多酷,而在于它解决了一个很具体的体验问题:焦点切换不应该让你思考“我现在在哪”。

按一下,去终端;再按一下,回到你刚才写代码的那个位置。不管中间有没有分屏,不管你在哪个编辑器分组,它都记得你最后一次待的地方。

对于键盘党来说,这种“不用想”的顺畅感,才是快捷键配置的终极目标。

赞(0)
未经允许不得转载:171主机测评 » VSCode如何实现一个快捷键在终端与编辑器之间来回横跳
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址