vscode终端:没有提示终止进程

时间:2017-10-23 22:29:21

标签: visual-studio-code command-line-interface

我习惯于通过按两次 Ctrl + C 来终止CLI中的进程,但这在vscode的集成终端中不起作用。它会提示确认。有没有办法以同样的方式使用它?或者甚至更好,只需1次按键。

2 个答案:

答案 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"
}

我看到的唯一缺点 - 它清除了历史。