I come from a vi background, and I'm used to using something like CtrlW+CtrlH/J/K/L to navigate around 'panes' in the editor interface, including both integrated terminals and text-editors.
I've got the following configuration, which gets me pretty close:
// 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"
},
// ...
This, for the most part, 'works' — I can use CtrlW+CtrlH/J/K/L to move left/down/up/right between pans, as well as using it to move "down" ("right", if you have your term in the sidebar) into the integrated-terminal drawer and then back "up" ("left") out of the integrated terminal drawer into the editors.
However, what I cannot do, is move "left"/"right" ("up"/"down") between multiple, split-pane integrated terminals — using those commands simply moves me back into the editor-pane.l The only way I currently have to switch between terminals is to use the built-in workbench.action.terminal.focusNext command (⇧⌘] on macOS).
Is there some way for me to unify these? I can make it work in a single windowing configuration, jankily, by overriding the left/right or up/down keys when in terminalFocus setting, to invoke terminal.focusNext instead of workbench.action.focusLeftGroup or whatever … but that is fragile, and only works if the split-terminals are indeed organized left-to-right (which isn't true when the terminals are in the sidebar.)