66 iTerm2 の control-@ 問題    よく分からないけれど解決?

ターミナル・エミュレーターとして iTerm2 というのを使っている。

リモート・ログインすることが多いので、 emacs もしばしば -nw オプションをつけて利用する。 iTerm2 version 3.5 から急に contraol-@ が使えなくなった。 正確に言うと、control キーを押しながら @ をタイプして、 3.4.23 までは NUL (=0x00) が送られて、set-mark-command (領域の開始点の設定) となっていたのだが、 3.5 以降では ~ が入力されるようになった。 set-mark-command は control- \fbox{space} でも入力できるというか、 むしろそちらの方が普通かもしれないけれど、 それも何かに横取りされたりするし、 何より私は control-@ に慣れきっているので、無意識に近くそうしてしまい、 ストレスがたまる。

(@ の ASCII コードは 0x40 で、 control して 0x00 になるのは、一応筋が通っているような気がしている。 control- \fbox{space} の方は良く分からない。)


誰かが指摘して、iTerm2 が直るかと思っていたのだが、一向にそうなる気配がない。

バグレポートを出そうかと思っていたのだが、emacs の中でなければ、 NUL が送られているようで (control-V, control-@ とすると ^@ となる)、 問題の説明が難しい。


ふと、ChatGPT に尋ねてみよう、と思い立った。

ChatGPT は iTerm2 も emacs もそれなりに知っているようだった。 iTerm2 は色々変化しているので、的外れなことを言っているような、 あるいはハルシネーション? でも、Settings の Profile の Key タブに行き着いた。 iTerm 3.4.23 と 3.5.11 の2つを開いて見比べる。 設定項目がかなり変わっている。色々変更があったことが分かる。 “Apps can change how keys are reported” というのが目にとまる。 デフォールトでチェックが入っているのだが、外してみたら大当たり。 無事 control-@ で set-mark-command が実行できるようになった。

(control-@ が使えるととても快適だ。やはりこうでなくちゃ。)

今回の ChatGPT は(も)、 直接的に解答をくれたわけではないが、非常に参考になる相談役となってくれた。 「そうだ。 試しに ChatGPT に尋ねてみよう。」 -- しばらくはこういうおつきあいかな。



桂田 祐史