Mar*_*ark 2 shell powershell visual-studio-code vscode-settings
我经常想快速重新运行我使用的最后一个 shell 命令。
我知道您可以将焦点转移到终端,向上箭头并输入,但我认为必须有比这三个步骤更好的方法。
sendSequencevscode 中的命令变得越来越强大,所以我寻找一种方法来创建一个可以快速运行最后一个 shell 命令的键绑定。
从键绑定发送文本
该
workbench.action.terminal.sendSequence命令可用于向终端发送特定的文本序列,包括转义序列。这可以实现诸如发送箭头键、输入、光标移动等功能。下面的示例显示了您可以使用此功能实现的各种功能,它会跳过光标左侧的单词(Ctrl+向左箭头)并按下退格键:
{
"key": "ctrl+u",
"command": "workbench.action.terminal.sendSequence",
"args": { "text": "\u001b[1;5D\u007f" }
}
Run Code Online (Sandbox Code Playgroud)
此功能支持变量替换。
请注意,该命令仅适用于
\u0000通过字符代码(而不是\x00)使用字符的格式。
请参阅终端支持变量替换:
{
"key": "ctrl+shift+t",
"command": "workbench.action.terminal.sendSequence",
"args": { "text": ". ${file}" }
}
Run Code Online (Sandbox Code Playgroud)
例如,请参阅终端中的运行文件:
{
"key": "ctrl+shift+t",
"command": "workbench.action.terminal.sendSequence",
"args": { "text": "node '${file}'\u000D" }
}
Run Code Online (Sandbox Code Playgroud)
我想出了这个键绑定:
{
"key": "alt+x",
"command": "workbench.action.terminal.sendSequence",
"args": { "text": "\u001b[A\u000d" }
},
Run Code Online (Sandbox Code Playgroud)
\u001b 是一个转义序列,表示以下字符具有特殊含义。
[A是一个向上的箭头。参见,例如,xterm 功能键:
Cursor Up | CSI A
Cursor Down | CSI B
Cursor Right | CSI C
Cursor Left | CSI D
Run Code Online (Sandbox Code Playgroud)(“CSI”指ESC或\u001b或后跟 a[并代表“控制序列引入器”(CSI 为 0x9b)。)
所以“CSI A”\u001b[A等于向上箭头,它应该将您的终端命令列表循环到上一个命令。
\u000d 是一个返回,所以命令会立即运行。现在Alt-x或者您选择的任何键绑定将运行最后使用的 shell 命令,焦点可以在编辑器或终端中。
为了好玩,我把这个命令放在一起:
"args": { "text": "\u0012watch\u001b[1;5C" }
Run Code Online (Sandbox Code Playgroud)
这将发出一个Ctrl-R到搜索以前的命令终端。
然后它将搜索“ watch”,然后Ctrl-rightArrow转到“ watch”的末尾,如果需要,您可以在此处修改参数。
或者跳过Ctrl-rightArrow部分 ( \u001b[1;5C) 并返回 ( \u000d) 以运行在历史记录中任何位置找到的命令。显然,您需要一个唯一的搜索词才能使其工作。
[在 powershell 和 git bash 中测试。未在其他地方测试。]
| 归档时间: |
|
| 查看次数: |
921 次 |
| 最近记录: |