Я придумал эту комбинацию клавиш:
{
"key": "alt+x",
"command": "workbench.action.terminal.sendSequence",
"args": { "text": "\u001b[A\u000d" }
},
\u001b
- escape-последовательность, указывающая, что следующие символы имеют специальное значение.
[A
- стрелка вверх. См., Например, функциональные клавиши xterm :
Cursor Up | CSI A
Cursor Down | CSI B
Cursor Right | CSI C
Cursor Left | CSI D
(«CSI» относится к ESC
или \u001b
или сопровождается [
и расшифровывается как «Представитель контрольной последовательности» (CSI 0x9b).)
Таким образом, «CSI A» равен \u001b[A
, что соответствует стрелке вверх, которая должна переключать ваш список команд терминала на предыдущую команду.
\u000d
- возврат, поэтому команда запускается немедленно.
Теперь Alt - x или любое другое связывание клавиш, которое вы выберете, будет запускать последнюю используемую команду оболочки, фокус может быть в редакторе или в терминале.
Ради забавы я собрал эту команду:
"args": { "text": "\u0012watch\u001b[1;5C" }
Это отправит Ctrl - R на терминал, который ищет предыдущие команды.
Затем он будет искать "watch
", а затем Ctrl - rightArrow , чтобы перейти к концу "watch
", где вы можете изменить аргументы, если это необходимо ,
Или пропустите Ctrl - rightArrow part (\u001b[1;5C
) и выполните возврат (\u000d
), чтобы запустить команду, найденную в любом месте вашей истории. Очевидно, для этого вам понадобится уникальный поисковый запрос.
[Протестировано в powershell, и оно должно работать и в bash. Не тестировался в других местах.]