Vimで.dotファイルの保存と同時にSVGへ変換して、さらにそのSVGからPNGに変換

if has("autocmd")
  autocmd BufWritePost *.dot silent :!"c:Program Files\Graphviz2.20\bin\dot.exe" -Tsvg <afile> > "<afile>:p.svg" && "C:Documents and Settings\baba\My Documents\bin\inkscape\inkscape.exe" "<afile>:p.svg" --export-png="<afile>:p.png"
endif

私が今やってるのが Windows でPATH通してないので、コマンド名のところがアレですが、Unix の人は適宜置き換えてください。

出力されるSVGとPNGのファイル名が、*.dot.svg, *.dot.png になってるのは、:p でフルパスにしてるから。だって、Inkscape コマンドライン版がフルパスじゃないと inkscape.exe のあるディレクトリで実行しちゃってエラー吐くんだもん。Unix の人は、:r.png とかでいいと思う。:r にすると拡張子抜きのファイル名がとれる。


試してないけど、Unix の人はこうなると思う:

if has("autocmd")
  autocmd BufWritePost *.dot silent :!dot -Tsvg <afile> > <afile>:r.svg && inkscape <afile>:r.svg --export-png=<afile>:r.png
endif

すっきりだね。SVG → PNG 変換は inkscape じゃなくて、rsvg 使った方が良いかもね。


あとはバックグラウンド実行にしたい。保存のたびに待たされるのがいやん。Vimスクリプトエキスパート求む。


追記:
silent 加えるだけでよかった。あとはコマンドプロンプトが一瞬立ち上がるのをどうにかしたい。引き続きおしえて君。

Ctrl-C

Ctrl-C で [Esc] なのを瀧内さんに教えてもらった。知らなかった。しょっく。遠い遠いと思いつつ対策してなかったんだよね。いや、[左Alt] を [Esc] に割り当ててたんだけど、押しにくすぎて使ってなかった。しかし、もう憂いはない。良かった。

CVS でプロクシを通す

DebianCVS って proxy パッチ当たってるんだ。ソースから作るのが面倒くて cvs 使ってなかった。今の所来てから初。

cvs -z3 -d ":pserver;proxy=proxy.example.jp;proxyport=9999:anonymous@cvs.sourceforge.net:/cvsroot/vim" co -P vim7

「"」(ダブルクォート)で括るのを忘れて(途中セミコロンがあるのでシェルが折っちゃう)、時間を無駄にした。orz


プロクシが使えるかの確認方法:[cvs-ml 1397] Re: Anonymous CVS pserver¤òproxy ·Ðͳ¤Ç»ÈÍѤ¹¤ë¾ì¹ç
面倒くさいので、早く Subversion になって欲しい。

ウィンドウサイズの変更

水平分割(CTRL-W s) 時に縦のサイズを変更する方法は知ってたのだけれども、垂直分割(CTRL-W v) 時に横幅を変更する方法が今日までわからなかった。


:help の「|usr_08.txt| Splitting windows」じゃなくて「|windows.txt| commands for using multiple windows and buffers」にあったのね。

現在のウィンドウらす
CTRL-W -
現在のウィンドウやす
CTRL-W +
現在のウィンドウらす
CTRL-W
現在のウィンドウやす
CTRL-W >

もちろん、-+<>の前には増減する(行|幅)数を指定できる。

filetype 変更

なんかすぐ忘れるのでメモ。


拡張子が無く且つ shebang 行が無かったりすると、ファイルタイプの認識に失敗し syntax や highlight が効かない事がある。さもありなん。


そーゆうとき、一時しのぎに変更する方法:

:set ft=ruby

ft は短縮名。正式には filetype。


しょっちゅう編集するならファイル末尾のコメント行にコマンドを埋め込む。

# vim: set filetype=ruby

具体的には ~/.irbrc とかね。

正規表現生活に幸せを呼ぶ eregex.vim

ホッテントリを狙うタイトルってこんなん? いや、狙う気ないけど。忙しいから。


すげぇよ!コレ。これで "?" 相当がわかったよ! もう素では使わないけど。

\=
直前の文字の0または1文字マッチ

マジで幸せ。この先何十年かを vim と生きてゆける気がした。祝福をありがとう!


そうそう、Windows でも %HOME%\vimfiles\ に入れてみました。doc ディレクトリも作って。

:helptags $HOME\vimfiles\doc

なんてやるとヘルプ呼び出しできるようになるんだね。ええ感じ。

正規表現 - 最小一致

苦手なんですよ vim正規表現。() にエスケープが要るトコとかなんか最悪。今日は最小マッチがわからなかったので調べました。

<tr><td bgcolor="#ffc0cb">0-0</td><td bgcolor="#ffc0cb">0-1</td><td>0-2</td></tr>
<tr><td>1-0</td><td>1-1</td><td>1-2</td></tr>
<tr><td bgcolor="#ffc0cb">2-0</td><td>2-1</td><td bgcolor="#ffc0cb">2-2</td></tr>

といった<tr hoge=〜>や<td fuga=〜>や</td>や</tr>タグにマッチさせるには、<[\/]*\t[rd].\{-}> なわけです。.*? で[はてな]使いたし。/ の有る無しに ?(0もしくは1文字マッチ)が使えないのもつらい。[はてな]使わせろ。


今日のポイント:

\{-}
最小一致