iTermなどではCtrl + _
でUndoができますが、VSCodeの統合ターミナルではうまく動きませんでした。
ただ、VSCode v1.28からworkbench.action.terminal.sendSequence
というコマンドが使えるようになったらしく、この機能でエスケープシーケンスを送ることでUndoのショートカットを作ることができました。
https://code.visualstudio.com/docs/editor/integrated-terminal#_send-text-from-a-keybinding
{
"when": "terminalFocus",
"key": "ctrl+[IntlRo]",
"command": "workbench.action.terminal.sendSequence",
"args": { "text": "\u001f" }
},
when
にはterminalFocus
を指定して、ターミナルにフォーカスしているときだけショートカットを有効にします。
日本語キーボードだと、_
のキーはIntlRo
になるみたいなので、key
にはctrl+[IntlRo]
を指定します。英字配列だとまた別のキーになると思います。
https://www.w3.org/TR/uievents-code/#code-IntlRo
Ctrl + _
が押されたときに送信されるエスケープシーケンスはUS
の0x1f
なので、args
のtext
には\u001f
を指定します。textには\u0000
のような形式で書く必要があるみたいです。
VSCodeの統合ターミナルでは一部のエスケープシーケンスが送信されないことがあるみたいなので、workbench.action.terminal.sendSequence
を使ってショートカットを作ることで作業効率を上げることができそうです。