PuTTY + Ubuntu + screen + vim で左に寄る理由

今まで PuTTY を複数起動して並行して使ったりとかよくやっていたので、素晴らしいと噂の screen を使ってみようと思って sudo apt-get install byobu した。

でもなんかおかしい。



screen 使わずに vim を立ち上げた時は
こんな感じで立ち上がるんだけど、screen で立ち上げた時は
テキストが左に寄ってしまうことがある。

検索してみると $TERM の中身を合わせた方がいいとか色々書いてあるんだけど両方とも xterm になってるし、これといった原因が思い浮かばず割と困った。
cjkwidth に関する話とかも見かけるけどそもそも日本語も出てこない状況でおかしくなってるので関係なさそう。

ずれてる状態で C-a l で再描画させると正常な位置に戻るけど、o で行増やしたタイミングとかでまたすぐ崩れたりして頻繁に再描画させられるハメになりそうだったのでそれは避けたい。

ふと思い立って PuTTY じゃなくて TeraTerm から試してみると問題なく動きそうだった。
で、byobu のメニューが便利らしいのでそれを使って設定しようかなと思って F9 押してメニューを出すと、TeraTerm もなんかおかしいみたいでちょっとずれてる。
ただ、ずれてる場所から察するに ↑ と ↓ が1文字分の幅で描画されるのを想定してたのに2文字分で表示されてしまっていることに起因する問題だと思われる。
ちょっと調べると、TeraTerm では Tera Special フォントをインストール時に一緒にシステムにインストールし、このフォントで罫線を表示しているらしい(内部的に使うだけのフォントなら AddFontResource 系の API を使ったほうがいいような気はするが……)。
同じような仕組みで ←↓↑→ の文字に関しても描画しなければいけないケースがあるということだと思うが、特にそのための設定も見当たらないので些細な問題として無視しよう(この辺が2008年頃に戦っていた部分と思われる)。

その後も何故 PuTTY でずれるのか調べた結果、どうやら原因はこの設定だった。
これにチェックが入っていたせいで想定していない位置に移動してしまっていたようだ。

チェックを外すことで問題ない挙動になったので無事 screen を使えるようになりました。
便利すぎる。