vim のカラースキームをはてなダイアリーで
vim のカラースキームを、はてなダイアリーのシンタックスハイライト用の CSS に変換する vim スクリプトを書いてみました。
fun! s:showHatenaCSS() let high_names = \ ["Normal","Special","Type","Comment","PreProc","Identifier","Constant","Statement"] let high_pairs = {} for name in high_names let fg = synIDattr(synIDtrans(hlID(name)),"fg#","gui") let bg = synIDattr(synIDtrans(hlID(name)),"bg#","gui") if fg != "" || bg != "" let high_pairs[name] = [fg,bg] endif endfor new for key in keys(high_pairs) let fg = high_pairs[key][0] let bg = high_pairs[key][1] let fg_elt = (fg == "") ? "" : printf("color : %s;",fg) let bg_elt = (bg == "") ? "" : printf("background-color : %s",bg) if key == "Normal" let key = "tax-highlight" " too adhoc ... endif let line = printf(".syn%s { %s %s }\n",key,fg_elt,bg_elt) exec "normal a" . line endfor set nomodified endf call s:showHatenaCSS()
使いかた:
- 上のリストを適当な名前のファイルに保存する。
- gvim か vim -g でそのファイルを開く。
- 好きなカラースキームを設定する(例: colo blue)。
- :so % するとウィンドウが分割するので、その内容をはてなダイアリーの「詳細デザイン設定」の「スタイルシート」のところにコピペ。
上の vim スクリプトのハイライトは desert を使ってみました。リストや辞書使ってるので vim7.0 が必要です。morning を使ったときは次のような出力になります。
.synComment { color : #0000ff; } .syntax-highlight { color : #000000; background-color : #e5e5e5 } .synStatement { color : #a52a2a; } .synIdentifier { color : #008b8b; } .synSpecial { color : #6a5acd; background-color : #f2f2f2 } .synType { color : #2e8b57; } .synConstant { color : #ff00ff; background-color : #f2f2f2 } .synPreProc { color : #a020f0; }