创建一个新的键绑定,它将Ctrl-C发送到VSCode终端

时间:2018-10-09 14:55:04

标签: visual-studio-code

我正在尝试在集成终端上为“控件C”添加新命令,但是由于某种原因,该命令仅在终端不集中时才起作用。

这是配置:

  {
    "key": "shift+backspace",
    "command": "workbench.action.terminal.sendSequence",
    "args": { "text": "\u0003" },
  }

我也尝试过删除“ shift + backspace”的默认命令

  {
    "key": "shift+backspace",
    "command": "-deleteLeft",
    "when": "textInputFocus && !editorReadonly"
  }

有什么不起作用的主意吗?

2 个答案:

答案 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 Shellhttps://code.visualstudio.com/docs/editor/integrated-terminal#_forcing-key-bindings-to-pass-through-the-terminal上的文档。