端末アプリで Ctrl-[ が Esc になる理由(Humanity)
今回は 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 は 0x40KoRoN [10:31 AM]
やっぱ大文字基準で、 SHIFT=+0x20 CTRL=-0x40 のほうが合致しそう。KoRoN [10:32 AM]
そういや昔のプログラム、全部大文字だったりしたな。mattn [10:32 AM]
これ、0 割れした場合の処理が端末毎に異なってるのがイヤらしいんすよ。
* 受け付けない
* 300 から引く
みたいな色々流儀がある
執筆: この記事は tyruさんのブログ『Humanity』からご寄稿いただきました。
寄稿いただいた記事は2018年10月10日時点のものです。
ガジェット通信はデジタルガジェット情報・ライフスタイル提案等を提供するウェブ媒体です。シリアスさを排除し、ジョークを交えながら肩の力を抜いて楽しんでいただけるやわらかニュースサイトを目指しています。 こちらのアカウントから記事の寄稿依頼をさせていただいております。
TwitterID: getnews_kiko
- ガジェット通信編集部への情報提供はこちら
- 記事内の筆者見解は明示のない限りガジェット通信を代表するものではありません。