has()

今まで何となく script を書いてきたけど has() 関数が超重要なことに今更気付いた。というのもひとの script に if has('autocmd') とか書いてあったので調べてみたら ( :help has() ) その機能が使えるかどうかの check だということに気付いたって流れで。なんでこんなんあるんだろうとちょっと考えてみたけど multi platform を地でいってる software だから platform ごとに support できない機能があったりとか軽量化とかそもそも使わないとかの事情で compile 時の特定機能を off にしたりできるってことなのかなぁと。まぁ major な OS 使ってればここらへん意識しないで済むとは思うけど。

で、何か script 書くときは :help feature-list を見つつ :echo has('foo') でその機能があるか確認しつつ書くのがいい、と。まぁ自分で使う script なら別にいちいち check しなくたっていいと思うんだけど ( Windows で binary 落としてきたとか apt でいれたとか、自分で compile してない状況なら事前に使えるか確認するのは必要だとは思う ) 、機能を持ってるかどうかだけじゃなくて特定の platform かどうかの判別にも使える、というかこれで判別せざるを得ないので積極的に使っていった方がいい気がする。

あと tab 機能は選択式じゃなくてがっちり組み込まれてる機能だってことにとりあえず驚いた。まぁ冷静に考えてみれば memory さえあればどの platform でも実現可能な機能だとは思うんだけど。