動機
Windows Terminal (Windows 11 + WSL + Ubuntu) で Vim を使おうとしたときに、タイトルに記載したとおり 2 つの障壁(ここでは 91 文字問題および 1c 問題と呼びます)に当たりました。しばらく不便な思いをしながら使っていましたが、文献を漁ってみたところなんとか解決策に行きつくことができたため記録しておきます。
環境
Windows ターミナル
バージョン: 1.16.10262.0
$ cat /etc/*release | grep pretty
PRETTY_NAME="Ubuntu 22.04.2 LTS"
$ vim --version # ローカルや ssh 接続先の複数環境で再現
VIM - Vi IMproved 7.4
VIM - Vi IMproved 8.2
$ echo $TERM
xterm-256color
# Vim 上で :set ttymouse した時の応答
ttymouse=xterm
『91 文字問題』
set mouse=a
ありで Vim を使用する際に各行の 91 文字目までがマウス操作可能、それ以降が不可能となる問題です。文字数については 93, 222, 224 と論じられている文献もあります。
下記 Stack Overflow の質問に対する回答に記載されているとおり、 ~/.vimrc に set ttymouse=sgr
を追加することで解決されます。
『1c 問題』
Vim で何らかのファイルを開くといきなり 1c
というコマンドが入力された状態となってしまい、これを消さないままキー入力やマウス操作をすると望まない文字列入力・削除が発生してしまうという問題です。起動直後のみの問題でそれ以降は通常通り使えます。
Windows Terminal の GitHub リポジトリのとある issue でも論じられています。
技術的な詳細は理解できていませんが、環境変数 TERM
の変更が効果を持つらしいのでこれを利用します。
利用できる TERM
の選択肢は toe -a
コマンドで閲覧できます。デフォルトでは xterm-256color
となっていて、私は古い環境に ssh 接続して作業することが多いためどの環境にもありそうなものを選びたい一方で 256 色は使いたいということを勘案して、なんとなく screen-256color
を選んでみます。
最初はローカルで export TERM=screen-256color
してみたところ、 Vim 自体は問題なく動き同問題も解消されましたが、 less
コマンドなどで見た目が良くない方向に変わってしまったので、下記のとおり Vim 実行時のみ利用することにしました。少し使用してみた感じでは見た目に全く違いはなく、使い勝手に関する問題も発生していません。
alias vim="TERM=screen-256color vim"