ターミナル・エミュレーターとして iTerm2 というのを使っている。
リモート・ログインすることが多いので、
emacs もしばしば -nw オプションをつけて利用する。
iTerm2 version 3.5 から急に contraol-@ が使えなくなった。
正確に言うと、control キーを押しながら @ をタイプして、
3.4.23 までは NUL (=0x00) が送られて、set-mark-command
(領域の開始点の設定) となっていたのだが、
3.5 以降では ~ が入力されるようになった。
set-mark-command は control-
でも入力できるというか、
むしろそちらの方が普通かもしれないけれど、
それも何かに横取りされたりするし、
何より私は control-@ に慣れきっているので、無意識に近くそうしてしまい、
ストレスがたまる。
(@ の ASCII コードは 0x40 で、
control して 0x00 になるのは、一応筋が通っているような気がしている。
control-
の方は良く分からない。)
誰かが指摘して、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 に尋ねてみよう。」 -- しばらくはこういうおつきあいかな。