TeraTerm + tmux + vimで、256色にする
今まで、Vimでcolorschemeをいじるときは、まともに動くcolorscheme探しだけをしていた。 Vimmerの人が大絶賛しているcolorschemeが動かないのはとても悲しかった。 ずっとそれで妥協していたが、今回それを治そうという気になったので、たくさん調べた。
結論
TERATERM.INIのTermType=xterm
をTermType=xterm-256color
に書き換える。
過程
おなじ悩みを持つ人は多いらしい。Googleで「tmux 256」などして調べればたくさんヒットする。
↑これがほぼすべてのヒットした解決策情報の最小公倍数。 ここに書いてある二行を.tmux.confにコピペしてみたが、うまく行かなかった。
この2つの文をちゃんと動作を考えると、動かしてみた結果からの想像だが、
set-option -g default-terminal screen-256color
が環境変数$TERMをscreen-256colorに上書きするというもので、
set -g terminal-overrides 'xterm:colors=256'
が$TERMがxtermのときの、colorsというオプションを256に書き換えるという感じらしい。たぶん。
$TERMによって変わるterminalのオプション(?)は、terminfoとかいうもの(/usr/share/terminfo/以下)に保存されているらしく、infocmp xterm
とかするとその内容が見える。
また、Tmux - ArchWikiにあるように、tmux -2
とすると、colorschemeが動いた。
-2
は、tmuxを強制的に256colorモードで動かすための引数である。(man tmuxより)
(ここで、aliasでtmuxに常に-2をつけるようにする解決策もあったし、紹介されていたが、なんとなく好かなかった。)
このページからリンクされているtmuxのCHANGESを"256"で検索しながら読むと、tmuxは環境変数$TERMに"256col"が含まれているかどうかで、256color modeにするかどうかを決めるそうだ。
確認してみたところ、もとの$TERMは"xterm"だった。
ということで、先に書いた結論のように、TeraTermの設定を書き換えて$TERMに256colorが含まれるようになると、tmuxが256color modeで動いてくれるというわけだ。
ここも想像だが、おそらく.tmux.confのdefault-terminalの設定は、tmux起動後に$TERMが書き換わるが、256color modeで起動するか否かはそれより早く判定されるのではないだろうか。 もしかしたらtmuxの前のバージョンは、この順序が逆だったので、この設定で直る人がいたのかもしれない。