2011/12/23

MacVimのColorSchemeで日本の伝統色を使う話

今日は天皇陛下七十八回目のお誕生日、今上陛下はうちの親父と同じ昭和八年生まれです。

最近知ったのですが、天皇陛下の束帯は黄櫨染(こうろぜん)という色を使う、そして黄櫨染という色は禁色(きんじき)と呼ばれ天皇陛下以外の何人も使用してはならないそうです。同じように皇太子殿下だけが身に付けることができる黄丹という色も禁色指定とあります。

丁度、日本の色名カッコよすぎワロタwwwwwwwwwVim Advent Calendar 2011で色の話(Vim の Color Scheme を自作するためのあれこれ - あじーん)が12月に出てきたので、今日はMacVimでこれらの日本の伝統色を名前で指定する話です。

僕はHTML・CSSを書くときに使う色は、彩度が低い日本の伝統色を頻繁に使っています。これらの色は日本の伝統色 和色大辞典 - Traditional Japanese Color Namesで他の色と共に確認できます。英語名のRed,LimeGreenなどの色と比較して彩度が低く明度もそれほど高くない、いわばくすんだ感じの色が目に優しい気がするので愛用しています。

MacVimの色テーマ

即位礼正殿の儀: 黄櫨染御袍の束帯
MacVim(普通のVimも)の色テーマは標準で入っているもの ($VIMRUNTIME/colors/*.vim) がいくつかありますが、どれも派手というか、多くの色が使われていて僕の好みのものがありません。

なのでカラースキーマ — 名無しのvim使いから適当なのを見つけて色を変えて~/.vim/colors/適当な名前.vimを作り、~/.gvimrcで``colorshceme 適当な名前''と書いて使っています。

ColorSchemeの指定方法は``hi Comment guifg=文字の色 guibg=背景色''という感じで指定をします。16進数の色コードをそのまま書くか、予め定義された色の名前を書きます。細かな設定方法はvim/gvimの色設定について - fudistに詳しく書かれています。

独自色の定義(変数)

Vimの変数として色の名前とコードを定義して、execute(Perlのevalみたいなの)で変数展開する方法があります。下記は ~/.vim/color/色テーマ.vim に書く内容の例示です。
" 色の変数定義
let b:kourozen = '#d99502'
let b:Aisumicha = '#474a4d'

" 色の指定
execute 'hi Normal         gui=none guifg='.b:Kourozen.' guibg='.b:Aisumicha

letで現在のバッファでのみ有効な変数を定義して、executeの引数に実行したいコードをPerlと同じく``.''で変数を連結します。使う色だけを定義するか、``let b:変数名 = 値''をたくさん書いたファイルを別途用意して読み込むという使い方ですが、executeの行がちょっと見にくくてあまりキレイではありません。

独自色の定義(XML)

普段使っている自作の色テーマ
MacVimで指定できる色の名前は、MacVim.app/Contents/Resources/ d領巾句と利に入っている Colors.plist にXMLで書かれているものだけが名前で指定できます、``hi Comment guifg=AliceBlue guibg=MidnightBlue''のように。

自分が使う色を全部Colors.plistに書いておけば ~/.vim/colors/色テーマ.vimで毎回色の名前を変数定義しなくても済みますので、色テーマをいくつも作る場合は合理的かもしれない気がします。


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<!-- generated from /usr/X11/bin/showrgb output by rgb2plist.py
     with modifications by Bjorn Winckler (added darkyellow, lightmagenta,
     lightred) -->
<dict>
        <key>aliceblue</key>
        <integer>15792383</integer>
...
        <!--日本の伝統色-->
        <key>kourozen</key>
        <integer>14051893</integer>
        <key>黄櫨染<key>
        <integer>14051893</integer>
</dict>
</plist>
青と黒を基調とした自作の色テーマ
Colors.plistに書く色の名前はUTF-8であれば(たぶん)日本語でも通ります。

畏れ多くも黄櫨染を使っていますが、黄櫨染を含め日本の伝統色は一発で漢字変換できないのもたくさんあるので、僕はアルファベット表記の名前で定義しています。

Colors.plistには<key>色の名前</key><integer>16進数のコードを10進数にしたもの</integer>と定義します。そうすることによって~/.vim/colors/色テーマ.vimで、下記のように直接定義した色名の指定が可能になります。

hi Comment guifg=Kourozen guibg=Aisumicha gui=none
hi Normal guifg=黄櫨染 guibg=藍墨茶 gui=none

最近作った畳っぽい色テーマ
自分で使う分にはColors.plistに書いたほうが楽ですが、MacVimを新しいのに差し替えたときはColors.plistが標準配布のファイルで置き換えられますし、自作のテーマを人に渡すときは色名を16進数のコードに変換するか、Colors.plistも一緒に渡す必要があるので、ちょっと面倒です。

なので変換スクリプトはそのうち、Perlの練習がてら作ってみようかと思っています。



追記: MacVimを新しいのにしたときは自分でパッチ(Gist/traditional-jp-colors.plist.diff)をあてています。
追記(2012/1/7): MacVimをアップデートしたらColors.plistを上書きしても独自定義の色名が認識しなくなりました。原因がよく解らないので困ってます、というか結局色名を16進数コードに変換しました...

0 件のコメント:

コメントを投稿