我习惯于通过按两次 Ctrl + C 来终止CLI中的进程,但这在vscode的集成终端中不起作用。它会提示确认。有没有办法以同样的方式使用它?或者甚至更好,只需1次按键。
答案 0 :(得分:2)
"workbench.action.terminal.sendSequence"
添加到settings.json中的terminal.integrated.commandsToSkipShell
列表中,然后搜索字符串terminal.integrated.commandsToSkipShell
,然后单击“在设置中编辑”。 json”。
如果您的settings.json中没有"terminal.integrated.commandsToSkipShell"
条目,只需添加它:
... ,
"terminal.integrated.commandsToSkipShell": [
"workbench.action.terminal.sendSequence"
]
然后,您还需要添加以下按键绑定(文件→首选项→键盘快捷键→打开keybindings.json):
{
"key": "ctrl+c",
"command": "workbench.action.terminal.sendSequence",
"args": {
"text": "\u0003Y\u000D"
},
"when": "terminalFocus && !terminalTextSelected"
}
请注意,此解决方案要求您使用 Ctrl - C 两次,并且只能在Visual Studio Code终端中使用。
这还将更改您在终端上运行的,依赖于两个 ctrl - c 指令的任何工具的行为:当您现在发送大写字母{{ 1}}和换行符作为第二条指令,请确保您正在运行的任何内容都具有另一种退出方式可用。
您可以通过添加以下设置来使用multi-command扩展名:
Y
"multiCommand.commands": [
{
"command": "multiCommand.terminateTerminal",
"interval": 1000,
"sequence": [
{
"command": "workbench.action.terminal.sendSequence",
"args": {
"text": "\u0003"
}
},
{
"command": "workbench.action.terminal.sendSequence",
"args": {
"text": "Y\u000D"
}
},
]
}
在两个interval
命令之间提供了一个暂停,并且两个代码都是必需的:
sendSequence
是文本结尾(Caret = ^ C)。
u\003
是 Return 。
然后在keybindings.json中添加一个键绑定:
u\000D
某些键组合不起作用(就像两次两次 Ctrl - C 的标准顺序一样),但是使用 Ctrl - Shift - C ,无论光标焦点位于编辑器,文件资源管理器还是运行良好的终端中。
请注意,这不会杀死或关闭终端或影响其历史记录,只是会在此停止当前作业。这可以在一个终端处于活动状态时使用,但是我没有检查打开多个终端会发生什么情况。
答案 1 :(得分:0)
将活动终端绑定到 Ctrl + C :
{
"command": "workbench.action.terminal.kill",
"key": "ctrl+c",
"when": "terminalFocus && !terminalTextSelected"
}
我看到的唯一缺点 - 它清除了历史。