nobu417.jp

ブログエントリー

最近ずっと iTerm 2 の中で tmux を使って作業をしているんだけれども、ひょんなことで設定をいじっていたら pane のボーダーの表示がおかしくなってしまった。その顛末記と備忘録。

ステップ1 : Emacs で表示がおかしくなるのを直したかった

iTerm の設定には "Treat ambiguous-width caracters as double width" ってのがあって、要は Unicode で定義されている文字の中で locale の設定によって実表示が半角か全角かが変わるような、あやしい文字を全角として表示上は扱うよ、ってのがあるんですね。

この設定を入れておかないと、Emacs とかで作業している時に一部の記号的な文字で表示がおかしくなる。

Vim の場合は :set ambiwidth=double とかにしておいてやれば、ターミナル上での表示はおかしくならないっぽいんだけれども、ターミナルで動く Emacs の場合は、設定ファイルでその辺りを設定しても、表示側はターミナルに任せっきりのようでうまくいかない。そういうわけで、前述した "Treat ambiguous-width caracters as double width" にチェックを入れたところまではよかったのだけれども・・・。

気が付いたら、なんか tmux の pane を分けるボーダーの挙動があやしくなったわけです。

ステップ2 : tmux にパッチを充ててビルドしよう

どうやらいろいろ調べてみると、パッチを充てて自分でビルドすることでなんとかなりそうなことがわかった。要は tmux のソースの中で、ボーダーに使っている Unicode 的に全角なのか半角なのかが怪しい文字列を、確実に半角として動く文字列に置き換えてしまえって理論ですね。

自分が使ったのは こちら のパッチ。

このパッチ自体はすごいシンプルで、よくよく読んでみれば、tmux 自体のソースをある程度読んでいれば自分でもなんとかなりそうな内容だった。

実は他にもパッチが公開されていたりしたんですが、自分の環境 (OS X Mavericks 10.9.3 に iTerm 2) では上手く動かなくて、このパッチだと上手くいきました。

tmux の公式サイト からソースを落として、上記のパッチを充てて ./configure → make → sudo make install で OK。

バッチリ問題が解決されました。

課題 : リモートの tmux は・・・

とりあえず MacBook Pro のローカルな tmux は自分でビルドして問題解決となったのですが、作業しているリモートサーバー上の tmux はこのパッチを充てていない状態なので表示がおかしい・・・そのうち時間をみつけて、リモートの方も自前でビルドするかなーとか思っています。

この記事へのコメント