4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

VSCodeの統合ターミナルでもターミナルのUndoを使いたい

Posted at

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

keybindings.json
{
  "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 + _が押されたときに送信されるエスケープシーケンスはUS0x1fなので、argstextには\u001fを指定します。textには\u0000のような形式で書く必要があるみたいです。

VSCodeの統合ターミナルでは一部のエスケープシーケンスが送信されないことがあるみたいなので、workbench.action.terminal.sendSequenceを使ってショートカットを作ることで作業効率を上げることができそうです。

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?