目にやさしく、地球にきびしく

以前言ってた 'encoding' を "utf-8" にしちゃいなよ you っていう entry ( http://d.hatena.ne.jp/janus_wel/20091203/1259837870 ) を書いたんだけどそうすると発生する問題を何とかしよう project 第 2 弾 ( 第 1 弾は http://d.hatena.ne.jp/janus_wel/20091205/1260034000 ) 。いやまぁ他に目立った問題もないのでこの project はこれで最後なんだけど。さらにm ( 中略 ) ごでもある。

今回は印刷を何とかしようというハナシで。 win32 環境では ( 多分まだ ) 印刷する場合 'encoding' の値が使われるので vim が奇っ怪な文書製造器になってしまう問題。使ってる printer の maker にもよるのかもしれないけど印刷用の data は cp932 じゃないといけないらしくて解決できなかった。ちょっと help 漁ってみればわかると思うんだけど 'printencoding' っていうそのものずばりぽい option があるもののこれは vim -> postscript への変換時に使われる encoding 指定なので使えない ( というか配布版 win32 版実行 file はそもそも +postscript が off で compile されているのでこの option が存在しない ) 。というわけで以下の解決法が考えられる。

  1. ASCII character のみの文書もしくは ASCII character の部分だけで事足りる文書しか印刷しない。
    • 一番手っ取り早い方法。例えば program の source だとかなんかの仕様書だとか論文だとか。
    • kaoriya さんとこのを使っている場合は default だと 'printheader' に日本語が含まれているので .vimrc で適宜変更。
  2. html 経由で印刷する。
    • vim には標準で :TOhtml っていう今の buffer の内容を html へ変換してくれる command があるんだけどこいつを使って http user agent に印刷させるという方法。
    • 使い方は適当に http://nanasi.jp/articles/vim/2html_vim.html でも見てもらう感じで。
    • さらに vimp 使ってると :hardcopy! とだけ打てばいいので楽ッスよ。久しぶりに「ッス」とか書いたわ。

で、いちいち変換するのに変数宣言してられるかーッ !! とかいちいち保存しなきゃならないのはいじめですか ? とか開くのまで自動的にやってよていうめんどくさがりやさんのために ( 主におれ ) plugin を書いた。 script 内に :TOhtml 用の設定を書いてるんだけど変更したい部分があれば直接変更してもらう感じで。 global variable で指定とかはあー、まぁそのうちな。

依存する file は autoload/shell.vim ( http://github.com/januswel/dotfiles/blob/master/vimfiles/autoload/shell.vim ) 。