我习惯于通过在CLI中按两次 Ctrl+C 终止进程,但是在vscode的集成终端中无法这样做。它会提示确认。有没有办法以相同的方式使用它?或者更好的是,只需按一次键。
我习惯于通过在CLI中按两次 Ctrl+C 终止进程,但是在vscode的集成终端中无法这样做。它会提示确认。有没有办法以相同的方式使用它?或者更好的是,只需按一次键。
\r
),这使得在Windows中使用ctrl+c感觉更好了。
"terminal.integrated.autoReplies": {
"[Oh My Zsh] Would you like to check for updates? [Y/n]": "Y\r"
}
如果您使用Clink并启用了它们的类似功能,则可以通过将回复设置为null来在Clink或VS Code中禁用它,以避免两个功能之间的冲突。"terminal.integrated.autoReplies": {
"Terminate batch job (Y/N)": null
}
null
以禁用自动回复。设置默认值为null:看起来他们正在将默认值更改为禁用。
在文件→首选项→设置中搜索字符串terminal.integrated.commandsToSkipShell
,然后单击“在settings.json中编辑”。将"workbench.action.terminal.sendSequence"
添加到你的settings.json中的terminal.integrated.commandsToSkipShell
列表中。
如果你的settings.json中没有"terminal.integrated.commandsToSkipShell"
条目,只需添加它:
... ,
"terminal.integrated.commandsToSkipShell": [
"workbench.action.terminal.sendSequence"
]
那么您还需要添加以下密钥绑定(File → Preferences → Keyboard Shortcuts → open keybindings.json):
{
"key": "ctrl+c",
"command": "workbench.action.terminal.sendSequence",
"args": {
"text": "\u0003Y\u000D"
},
"when": "terminalFocus && !terminalTextSelected"
}
请注意,此解决方案需要您使用Ctrl-C 两次,并且仅适用于Visual Studio Code终端。
这还将更改在终端中运行的任何依赖于两个ctrl-c指令的工具的行为:因为您现在发送的是大写字母Y
和一个换行符作为第二个指令,因此请确保您正在运行的任何工具都有可用的备用退出方式。
您可以使用multi-command扩展,通过添加此设置:
"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
命令之间的暂停,这两个命令都是必需的:
u\003
是文本结束符(Caret = ^C)。
u\000D
是一个回车键。
然后在keybindings.json中添加一个按键绑定:
{
"key": "ctrl+shift+c",
"command": "extension.multiCommand.execute",
"args": { "command": "multiCommand.terminateTerminal" },
},
某些关键组合键将无法使用(例如标准序列Ctrl-C两次),但是使用Ctrl-Shift-C,无论光标焦点在编辑器、文件浏览器还是终端中,它都可以正常工作。
请注意,这不会关闭或结束终端,也不会影响其历史记录,它只会停止当前的作业。