端末エミュレータの話。基本的にvimが起動しっぱなしのコード書き専用端末はBlack Box(のnightly版)。他方、割と雑用的に使う端末は以前の記事の通りWezTermを試している。
WezTermのprosのひとつは、とにかく設定の自由度が高い上にluaでなんでもできてしまう点だろう。Gnome TerminalだとAlt+1〜Alt+9で開いたタブを直接選択する機能があるが(Black Boxもそうである)、WezTermにはない。ないが、単にそういうキーバインディングを設定すれば対応できてしまう。よい。
一方でよくない点もいくつかある。WezTermの売りのひとつはGPUを活用した高速なレンダリングである。WezTermの他にもうちGPU使ってるんで超速いっすよ!という端末はいくつかあるのでホットなトピックなのだろう。しかし、個人的には端末の高速レンダリングがそんなに嬉しいか? という感じがしてあんまり刺さらないんですよね。それに、端末上でtmuxを介するとだいたいここで大きく律速されてしまうので実質的にはあまり効果が感じられないという観点もある。
それと、おそらくはGPUのハンドリングにまつわる話なのだと思うのだけど起動中の占有メモリがけっこう半端なくなる時があるのも気になる。
その他、IMのハンドリングに若干のバグが残っておりたまにIMをアクティブにできなくなる、その上デスクトップ全体で文字入力ができなくなってしまうことがある(なぜかGnomeデスクトップ自身とIMの状態を共有してるっぽく、Gnomeのアプリ検索とかで一旦IMをアクティブにしてからWebTermに戻ると復帰したりする)、クリップボードから貼り付けるとおかしな文字選択状態になる、画面の最終桁からワイドな文字の入力を始めると次行からの表示がしっちゃかめっちゃかになるなど日本語の表示と入力に関して改善の余地がある。
そんなこんなで新しいバージョンがリリースされるのを待ち侘びているのだけど、最終バージョンが2024年の2月ということで相当待たないといけない予感がしている。それならば、その間に別の端末を試してみるか。
というわけで本題のmltermである。実はmlterm自体はLinux環境をセットアップするたびたいてい入れてたのだけど、常用の端末にはなってなかった。viやvimは入力モードを抜けるとカーソルが1文字左に戻るのだがこの仕様を便利だと思ったことはない。そこで
inoremap <silent> <Esc> <Esc>`^
というように定義して入力モードを抜けたら入力モードに入る前のマークへ強制的にカーソルを置くようにしている。しかしこの定義がなぜかmltermでだけカーソルが戻らない上に勝手にundoが実行されるという奇妙な動作になってしまいmlterm上でvimが使い物にならないのである。
実は同じような誤動作はWezTermでも起こるのだが、こちらの場合はリポジトリに置いてあるWezTerm用のterminfoを与えると直る。じゃあmltermもそうじゃないのということになるが、どうもmlterm用のterminfoは何が正しいのかよく分からず、放置していた。こういう話もある。
ところが、最近上記の定義をなんとなくmltermで動かしてみたところ、あれ?なんか普通に動くではないか。そこで、ちゃんと使ってみようかということになったのだ。