screen の上で 256色の vim を使う

tmux 使えよって罵倒されそうですが、未だに screen を使っています。
ようやく vim のシンタックスハイライトを有効にして生活し始めたのですが、
開発に使っているさくら VPS に設定を反映したところ 16色モードで動いていると判断されているため
jellybeans colorscheme が大変切ない見栄えになってしまいます。
ビジュアルモードで範囲選択しようとしても、バカには見えないモードで範囲選択しようとするので使い物になりません。

せめてカラーパレットが 4096色あれば、グラデーションやらなんやらでごまかせるんですけどねえ(違)

とりあえずぐぐる → 反映

いくつかの記事を読んでみた感じだと screen を 256色対応でビルドしなおして、
.screenrc に

attrcolor b ".I"
defbce on 
termcapinfo xterm* 'Co#256:AB=\E[48;5;%dm:AF=\E[38;5;%dm'

と書いておくと screen が 256色で動き、
.vimrc には

set t_Co=256

と書きたしておくのが定石のようです。(参考: Vim-users.jp - Hack #64: 256色ターミナルでVimを使用する)

ちなみに Colour colour everywhere! 256 colour-mode for Linux consoles では、ステップごとに何をしているのかを丁寧に説明してくれています*1

さて、僕の VPS はどうなっているかを確認してみたところ

  • 256colors2.pl は動いた
    • Debian/wheezy の screen コマンドは最初から 256色対応の模様
    • attrcolor や bce モードでの起動は必要ないみたい
  • vim の syntax/colortest.vim は正しく表示できなかった
    • set t_Co=256 するとうまく表示できた

という状況だったので、.vimrc を書き換えるだけにとどめることにしました*2

" Enable 256 colors FORCELY on screen
if $TERM == 'screen'
    set t_Co=256
endif

他の環境ではどうなるのかは分からないので、他の記事を読みつつ書き換えてみてください。
次は 1677万色向けの記事でお会いしましょう。

*1:こちらの記事だと単純に set t_Co=256 するのではなく、TERMCAP を書き換えつつ 256色対応している。本来の設定の意味に沿っているように見えるので、こちらの方が丁寧か。

*2:termcap まわりの知識がないので、必要ないのに安易に書き換えると死を見そうな気がしたので…