在 VS Code 中,如果我想编写一个键盘快捷键来将
command
发送到终端,我可以在 ~/.config/Code/User/keybindings.json
中使用以下内容:
{
"key": "alt+p",
"command": "workbench.action.terminal.sendSequence",
"args": {
"text": "command\u000D"
}
},
在这种情况下,
\u000D
会向终端发送一个回车符,这实际上只是运行git push
命令。
现在,我想创建一个键盘快捷键,按“向上”键,然后按 Enter,以重新运行上一个命令。我该怎么做?
目前,我找到了一个临时解决方法:
{
"key": "shift+alt+1",
"command": "workbench.action.terminal.sendSequence",
"args": {
"text": "\u0021\u0021\u000D"
}
},
\u0021
是!
的unicode,因此此命令将!!
发送到终端,在bash
中扩展为最近运行的命令,然后发送回车运行命令。但是,我想找到一个跨平台解决方案,因为据我所知,!!
在 Windows 上的工作方式不同。
另一种解决方法是复制以前的终端命令并将其粘贴回终端,但这有一个缺点,即擦除剪贴板上以前的所有内容:
{
"key": "shift+alt+1",
"command": "runCommands",
"args": {
"commands": [
"workbench.action.terminal.copyLastCommand",
"workbench.action.terminal.paste",
{
"command": "workbench.action.terminal.sendSequence",
"args": {
"text": "\u000D"
}
}
]
}
},
我找到了解决方案这里,就是使用:
{
"key": "shift+alt+1",
"command": "workbench.action.terminal.sendSequence",
"args": {
"text": "\u001b[A\u000d"
}
},
这里,
\u001b
是unicode转义序列,[A
是xterm
中的向上箭头。这在 Ubuntu 上有效,但我还没有在 Windows 中测试过。