seat-of-the-pants autocommanding

http://d.hatena.ne.jp/janus_wel/20091120/1258698899 に対して、じゃないな、これがきっかけで id:thincahttp://d.hatena.ne.jp/thinca/20091121/1258748377 にいろいろ書いてくれたので自分なりにまとめ。あー syntax だとか match まわりのハナシは別に。

とりあえず今回 autocmd を書くときに気をつけるべきだと思ったのは細かいところまで event を理解しないといけないことかなぁ。何がいつ発生して何に適用されるかってことをあらかたの event について知ってないと「適切に」扱うには難しいなぁと実感した。今回の例でいえば BufNew が意図通りに発生する条件とか Syntax, ColorScheme あたりの event の存在とか発生条件とか。

まぁ event driven で何かやろうとするとここらへんは基本中の基本なんだけど今回改めてわからされた感じで。これって職人の勘レベルの、ある程度の知恵と経験を要求するので一概に習得できないんだよなー。いやまぁ多少の認識違いがあっても意図通りにならないというくらいのことなのでめんどくさがらずにがしがし書けという結論になるんだけども。

あと command 一行で event が飛ぶっていうのもけっこう驚いたというか目を覚まされたというかウロコが落ちたというか。具体的には以下のくだりなんだけどここらへんの手軽さと複雑さを相手にすると今まで触ってきた OS や framework がどれだけ洗練されていたかがわかる。

Syntax イベントには syntax を再定義するためのイベントが登録されているのだが、:syntax enable をするとこのイベントが一旦消されて再定義される。結果、自分で定義した Syntax 用のイベントよりシステムのイベントが後に定義される。イベントは定義された順に実行される。そしてこのシステムのイベントは、最初に syntax を clear する…。

Vim Hack #40: 不可視文字を表示する の補足 - 永遠に未完成

で、ちょいと help だけじゃ限界があるなぁと思ったのでとりあえず一回 event sequense を可視化しようという方向で脳内調整中。誰かやってるとは思うんだけどやる気のない状態で google の精を飛ばしても成果が得られなかったので vim を debug mode で起動しつつ各種 event を定義して action ( 手動 ) に対する event sequence の可視化を行おうということを考えている、というかそれでうまくいけばいいなと思っている。 vim 自体の source 読むより実際に動いてるもんで飛んでるもんを見た方が確実だしうまくいけばいつまでも使えるだろうということで。強いていえば問題はそれをやる気が全くおこらないことなんだけど、っていうかそれが一番の障害だよおい。