【发布时间】:2021-04-08 12:30:59
【问题描述】:
不确定它是否被称为“取消信号”,但我说的是 ctrl+c 当你想停止运行时。我实际上希望 Terminal: Copy Selection 是 ctrl+c,我可以在 Keyboard Shortcuts 中进行更改。但是我无法将取消信号更改为我想要的,即:ctrl+shift+c。那是因为我似乎找不到那个键绑定。
【问题讨论】:
不确定它是否被称为“取消信号”,但我说的是 ctrl+c 当你想停止运行时。我实际上希望 Terminal: Copy Selection 是 ctrl+c,我可以在 Keyboard Shortcuts 中进行更改。但是我无法将取消信号更改为我想要的,即:ctrl+shift+c。那是因为我似乎找不到那个键绑定。
【问题讨论】:
Ctrl+C 仅对 shell 有效,对于 VSCOde 仅在终端窗格中运行。您所说的其他键绑定通常适用于 VSCode IDE,而不适用于可能存在的终端窗格中运行的任何 shell。
当终端窗格获得焦点时,您应该会发现 Ctrl+C 正常工作。我不认为键绑定是可重新分配的,因为它内置在终端窗格中运行的 shell 中。
但是,VSCode 提供了终止活动终端或重新启动它的功能。也许您想为这些操作分配热键?
顺便说一句,您可以设置终端窗格的行为,以便在选择文本时将它们复制到剪贴板。无需击键。您可以通过编辑 settings.json 并添加以下行来启用该功能:
"terminal.integrated.copyOnSelection": true,
【讨论】:
$SHELL = /usr/bin/zsh。在首选项下,我将“复制”更改为 Ctrl+C,然后“取消”命令(我实际上无法通过首选项更改)自动更改为 Ctrl+Shift+C。在 VSCode 终端中,我仍然有 $SHELL = /usr/bin/zsh,但前面提到的更改都没有转发给它。所以我继续并更改了 VSCode 中的“复制”键绑定,希望我能再次幸运。没有雪茄
terminal.integrated.copyOnSelection,这可能是你最好的选择。我自己用这个。
您可以向终端发送控制序列,请参阅send text to a terminal,如下所示:
{
"key": "ctrl+shift+c",
"command": "workbench.action.terminal.sendSequence",
"args": {
"text": "\u0003\u000D" // Ctrl+C
},
// "when": "terminalFocus && !terminalTextSelected"
},
如果您希望它仅在终端有焦点且有或没有选择时可用,请使用when 子句。
\u003 是 Ctrl+C 见
/** 文本结束 (插入符号 = ^C) */
导出常量 ETX = '\x03';
和\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 任务:
【讨论】: