我正在尝试在集成终端上为“控件C”添加新命令,但是由于某种原因,该命令仅在终端不集中时才起作用。
这是配置:
{
"key": "shift+backspace",
"command": "workbench.action.terminal.sendSequence",
"args": { "text": "\u0003" },
}
我也尝试过删除“ shift + backspace”的默认命令
{
"key": "shift+backspace",
"command": "-deleteLeft",
"when": "textInputFocus && !editorReadonly"
}
有什么不起作用的主意吗?
答案 0 :(得分:0)
有些键盘和弦似乎被vscode占用了,并且从未到达终端。我一直无法弄清楚哪个。我也无法使 Shift -退格键正常工作,但是其他键和弦却可以做到以下几点:
{
"key": "ctrl+shift+c",
"command": "workbench.action.terminal.sendSequence",
"args": {
"text": "\u0003"
},
}
也许您最终尝试做类似terminate a process with a keybinding的事情?
答案 1 :(得分:0)
问题在于集成终端“消耗”了许多击键(如ctrl-c),从而阻止了它们被用于键绑定,因为当集成终端获得焦点时,它们永远不会传递给VScode。
基本上,将所需的键绑定到所需的命令,例如(在keybindings.json中或使用键盘快捷方式编辑器)
...
{
"key": "ctrl-x o",
"command": "workbench.action.focusActiveEditorGroup",
"when": "terminalFocus"
},
...
然后将COMMAND(此处为workbench.action.focusActiveEditorGroup
)添加到设置Commands To Skip Shell
中。在此示例中,此后不会将ctrl-x传递到终端。 (无论如何,ctrl-x会做什么?)请注意,这会删除将信号发送到集成终端的功能。
有关更多信息,请参见设置Terminal › Integrated: Commands To Skip Shell
和https://code.visualstudio.com/docs/editor/integrated-terminal#_forcing-key-bindings-to-pass-through-the-terminal上的文档。