【问题标题】:VSCode change key binding for cancel signal in terminalVSCode更改终端中取消信号的键绑定
【发布时间】:2021-04-08 12:30:59
【问题描述】:

不确定它是否被称为“取消信号”,但我说的是 ctrl+c 当你想停止运行时。我实际上希望 Terminal: Copy Selectionctrl+c,我可以在 Keyboard Shortcuts 中进行更改。但是我无法将取消信号更改为我想要的,即:ctrl+shift+c。那是因为我似乎找不到那个键绑定。

【问题讨论】:

    标签: visual-studio-code


    【解决方案1】:

    Ctrl+C 仅对 shell 有效,对于 VSCOde 仅在终端窗格中运行。您所说的其他键绑定通常适用于 VSCode IDE,而不适用于可能存在的终端窗格中运行的任何 shell。

    当终端窗格获得焦点时,您应该会发现 Ctrl+C 正常工作。我不认为键绑定是可重新分配的,因为它内置在终端窗格中运行的 shell 中。

    但是,VSCode 提供了终止活动终端或重新启动它的功能。也许您想为这些操作分配热键?

    顺便说一句,您可以设置终端窗格的行为,以便在选择文本时将它们复制到剪贴板。无需击键。您可以通过编辑 settings.json 并添加以下行来启用该功能:

        "terminal.integrated.copyOnSelection": true,
    

    【讨论】:

    • 对,所以我的普通 Ubuntu 终端有$SHELL = /usr/bin/zsh。在首选项下,我将“复制”更改为 Ctrl+C,然后“取消”命令(我实际上无法通过首选项更改)自动更改为 Ctrl+Shift+C。在 VSCode 终端中,我仍然有 $SHELL = /usr/bin/zsh,但前面提到的更改都没有转发给它。所以我继续并更改了 VSCode 中的“复制”键绑定,希望我能再次幸运。没有雪茄
    • VSCode 不会将击键转发到终端,除非它们有焦点
    • 是的,我不确定我是否在这里使用了错误的术语,但到目前为止,在我讨论过的所有上下文中,我绝对专注于终端窗格
    • 我刚刚在我的回答中添加了关于杀死或重新启动活动终端的建议。
    • 我的回答的最新变化是提到terminal.integrated.copyOnSelection,这可能是你最好的选择。我自己用这个。
    【解决方案2】:

    您可以向终端发送控制序列,请参阅send text to a terminal,如下所示:

     {
        "key": "ctrl+shift+c",
        "command": "workbench.action.terminal.sendSequence",
        "args": {
            "text": "\u0003\u000D"   // Ctrl+C
        },
        // "when": "terminalFocus && !terminalTextSelected"
      },
    

    如果您希望它仅在终端有焦点且有或没有选择时可用,请使用when 子句。

    \u003Ctrl+C

    /** 文本结束 (插入符号 = ^C) */
    导出常量 ETX = '\x03';

    来自escape sequences

    \u000D 是来自同一来源的返回。


    然后你的其他代码设置 Ctrl+C 来复制终端文本:

        {
            "key": "ctrl+c",
            "command": "workbench.action.terminal.copySelection",
            "when": "terminalFocus && terminalProcessSupported && terminalTextSelected && terminalTextSelected"
        },
        {
            "key": "ctrl+shift+c",
            "command": "-workbench.action.terminal.copySelection",
            "when": "terminalFocus && terminalProcessSupported && terminalTextSelected && terminalTextSelected"
        }
    

    演示已经在运行serve 任务:

    【讨论】:

      猜你喜欢
      • 2014-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-10
      • 1970-01-01
      • 2016-01-30
      相关资源
      最近更新 更多