我有 vi 背景,并且我习惯使用类似CtrlW+的东西CtrlH/J/K/L在编辑器界面中的“窗格”中导航,包括集成终端和文本编辑器。
我有以下配置,它让我非常接近:
// settings.json
"terminal.integrated.commandsToSkipShell": [
"workbench.action.focusRightGroup",
"workbench.action.focusLeftGroup",
"workbench.action.focusAboveGroup",
"workbench.action.focusBelowGroup"
],
// keybindings.json
// ### Mimic some vi-bindings when in a terminal
{
"key": "ctrl+w ctrl+l",
"command": "workbench.action.focusRightGroup",
"when": "terminalFocus"
},
{
"key": "ctrl+w ctrl+h",
"command": "workbench.action.focusLeftGroup",
"when": "terminalFocus"
},
{
"key": "ctrl+w ctrl+k",
"command": "workbench.action.focusAboveGroup",
"when": "terminalFocus"
},
{
"key": "ctrl+w ctrl+j",
"command": "workbench.action.focusBelowGroup",
"when": "terminalFocus"
},
// ...
在大多数情况下,这都是“有效的”——我可以使用CtrlW+CtrlH/J/K/L在平移之间向左/向下/向上/向右移动,也可以使用它来“向下”(“向右”,如果你的术语在侧边栏中)移动到集成终端抽屉中,然后再“向上”(“向左”)退出集成终端抽屉进入编辑器。
然而,我不能做的是移动“左”/“右”(“上”/“下”)之间多种的,分割窗格集成终端 - 使用这些命令只需将我带回到编辑器窗格。我目前必须在终端是使用内置workbench.action.terminal.focusNext
命令(⇧⌘]在 macOS 上)。
有什么方法可以让我统一这些吗?能通过覆盖左/右或者设置时使用向上/向下键terminalFocus
,调用terminal.focusNext
而不是workbench.action.focusLeftGroup
或其他……但这很脆弱,并且仅在分离终端是确实是从左到右组织的(当终端位于侧边栏时情况并非如此。)