如何在VS Code中向终端发送上箭头按键以重跑命令?
在VS Code中配置快捷键重跑终端上一条命令
在VS Code中,若要编写快捷键向终端发送命令,可在~/.config/Code/User/keybindings.json中配置,示例如下:
{ "key": "alt+p", "command": "workbench.action.terminal.sendSequence", "args": { "text": "git push\u000D" } },
其中\u000D是回车的Unicode编码,用于触发命令执行。
需求:配置快捷键实现「调用上一条命令并执行」
需要实现的效果是:按下快捷键后,等效于在终端按「上箭头」再按回车,快速重跑上一条命令。
目前有两个临时方案:
方案一:利用Shell的!!命令(仅兼容类Unix系统)
{ "key": "shift+alt+1", "command": "workbench.action.terminal.sendSequence", "args": { "text": "\u0021\u0021\u000D" } },
\u0021是!的Unicode编码,发送!!再回车后,在bash等类Unix Shell中,!!会自动展开为最近执行的命令并执行。但该方案仅适用于类Unix系统,Windows的CMD/PowerShell不支持!!语法,无法兼容。
方案二:复制粘贴上一条命令(跨平台但会覆盖剪贴板)
{ "key": "shift+alt+1", "command": "runCommands", "args": { "commands": [ "workbench.action.terminal.copyLastCommand", "workbench.action.terminal.paste", { "command": "workbench.action.terminal.sendSequence", "args": { "text": "\u000D" } } ] } },
通过runCommands组合三个动作:复制终端最后一条命令、粘贴、发送回车执行。该方案能跨平台使用,但会覆盖剪贴板原有内容,存在副作用。
内容的提问来源于stack exchange,提问作者Jake Levi
相关产品推荐
相关产品推荐

