2012/12/07

Vimの背景色を環境変数で設定する

本記事は Vim Advent Calendar 2012 の7日目です。6日目は いつでもどこでも同じ.vimrcを使う - くりにっき でした。ここでは端末の色設定についての小技を紹介したいと思います。

端末使いは明るい背景色が好み!?

私は ssh 先での作業が多いため、ターミナルエミュレータの設定で接続先ごとに黒背景と白背景を使い分けています。当然 CUI の vim を使うことになるのですが、デフォルトでは明るい背景に合う色(background=light)となっているため、黒背景の端末を使っているときは毎回 :se bg=dark と打ち込んでいます。これがけっこう面倒です。そういえば Linux における ls コマンドのカラー出力のデフォルトも黒背景に優しくないですね。

はじめから設定ファイルに書いておけばよいのですが、共通の .vimrc を使っている場合でホスト名をハードコードして分岐したくないときがあります。え?私だけ?

COLORFGBG環境変数

そのような時は Vim 7 で参照されるようになった COLORFGBG 環境変数を使う事で解決できます。

  • :help version7
    When using an rxvt terminal emulator guess the value of 'background' using the COLORFGBG environment variable. (Ciaran McCreesh)
  • :help 'background'
    For MS-DOS, Windows and OS/2 the default is "dark". For other systems "dark" is used when 'term' is "linux", "screen.linux", "cygwin" or "putty", or $COLORFGBG suggests a dark background. Otherwise the default is "light".
具体的にどのような値を設定すべきかは、ソースコードのコメントに記されています。
  • vim73/src/option.c

私は黒背景をメインに使っていますのでシェルの設定で COLORFGBG 環境変数の値を 15;0 としています。白背景の端末を使って接続するホストの場合はこの値を 0;15 としています。ローカル端末の場合はターミナルエミュレータによってはプロファイルなどの値が変数で参照できますので、それらが白背景の時に変更しています。

.vimrc か .zshrc のどちらに設定を書くかというだけですが、環境変数でも背景色を設定できる vim って柔軟でいいなーと思いました。

明日は @kefir_ さんです。楽しみですね。

0 件のコメント:

コメントを投稿