今回は tyruさんのブログ『Humanity』からご寄稿いただきました。

端末アプリで Ctrl-[ が Esc になる理由(Humanity)

理由

SHIFT キーはキーコードを -0x20、CTRL キーはキーコードを -0x40 する機能

全文

vim-jp.slack.com の #random から。

heavenshell [10:08 AM]
TouchBar MBP にしたら強制的に C-[ になるので、オススメです!ようやく矯正できた。

mattn [10:09 AM]
人間の方が最適化されている

yoshitia [10:12 AM]
Escが物理的にない状況用にデフォルトでCtrl-[ 用意してるのすごい

mattn [10:14 AM]
いや、用意した訳ではないです。
SHIFT キーはキーコードを -0x20、CTRL キーはキーコードを -0x40 する機能なのです。
なので `[` つまり 0x5b は 0x1b になる。
0x1b = ESC
同様に CTRL-H は H が 0x48 なので 0x08、つまり BS になる。

yoshitia [10:17 AM]
元からある仕組み上、代用ができちゃうだけなんですね

mattn [10:17 AM]
ですです。
逆に言うと
`;` は 0x3b なので CTRL を使うと 0 以下になる、つまり使えないという事です。
端末の場合はマッピング出来る事もありますが、gvim で出来ないのはそれが理由です。

yoshitia [10:19 AM]
符号付UNICODEの機運(ない

KoRoN [10:26 AM]
僕は ENTER の代わりに CTRL+M 使うことが多い。 (0x4D – 0x40 = 0x0D)
あれ? あれ?
M=0x4D, m=0x6D だな。
小文字基準で CTRL は -0x60 とすべきなのかな。 (edited)

mattn [10:30 AM]
あ、ですです
これちなみに Unicode も受け継いでてくれてて

KoRoN [10:30 AM]
でもそうすると 5b が説明つかん?

mattn [10:30 AM]
`a` と `A` は -0x60 なんすよね
CTRL は 0x40

KoRoN [10:31 AM]
やっぱ大文字基準で、 SHIFT=+0x20 CTRL=-0x40 のほうが合致しそう。

KoRoN [10:32 AM]
そういや昔のプログラム、全部大文字だったりしたな。

mattn [10:32 AM]
これ、0 割れした場合の処理が端末毎に異なってるのがイヤらしいんすよ。
* 受け付けない
* 300 から引く
みたいな色々流儀がある

執筆: この記事は tyruさんのブログ『Humanity』からご寄稿いただきました。

寄稿いただいた記事は2018年10月10日時点のものです。

―― 表現する人、つくる人応援メディア 『ガジェット通信(GetNews)』

情報提供元:ガジェット通信
記事名:「端末アプリで Ctrl-[ が Esc になる理由(Humanity)