Puppet用vimプラグインpuppet-syntax-vimの紹介。
Arrow =>
Alignment
PuppetlabsのStyle Guideにこんな文言がある。
Style Guide — Documentation — Puppet Labs
9.2. Arrow Alignment
All of the fat comma arrows (
=>
) in a resource’s attribute/value list should be aligned. The arrows should be placed one space ahead of the longest attribute name.
つまり、以下のようなコードが見た目的にBadだと言うことだ。
file { '/etc/foo.d':
source => 'puppet:///foo.d',
owner => 'root',
recurse => true,
}
ではGoodは何か。それは次のようにattributesとvalueを、=>
の記号を軸に整列させることだ。
file { '/etc/foo.d':
source => 'puppet:///foo.d',
owner => 'root',
recurse => true,
}
あくまで見た目の問題でしか無いのだが、人にコードを見せる上ではこうした部分にも気を使いたい。
とはいえ、いちいちSpaceキーを打って調整して、また削除して調整しての繰り返しは苦しい。 また、vimプラグインのAlignを使ってもいいが、毎回整列のためにコマンドを打つのも虚しい(もちろん使うには使う)。
第一そんなことをしていたら、どこかしらに確認漏れが発生する。 puppet-lintを入れても損は無いが、そもそもの話、たかだか見た目の問題を外部から指摘されて直している時点で、状況が改善していない。
書いているだけで、自然とスタイルガイドを踏襲したコードになっているのが良いと思う。 スタイルガイドを身体に覚えさせなくてもいい、別な方法で。
puppetlabs/puppet-syntax-vim
実は、先の要望を叶えてくれるvimプラグインをPuppetlabsが用意してくれている。
それがpuppet-syntax-vimである。もちろん、puppet-syntax-emacsもある。
私はneobundle.vimを使っているので、以下の2行でインストールしている。 導入自体、これだけで良い。
NeoBundleLazy 'puppetlabs/puppet-syntax-vim', {
\ 'autoload': {'filetypes': ['puppet']}}
さて、このプラグインが実際どんな動きをするのか、スクリーンキャプチャを撮ってみた。 OS X Screencast to animated GIFに倣って15秒ほどのGIFアニメにしてみた。 これで動作を確認してもらいたい。
attributeを書いて、arrow =>
を書いて、空白スペースを押す。
これまでと変わらない操作で、自動的にリソースのattributesが整列されていることが分かる。 気を使うことなく、自然とスタイルガイドに倣ったコードになってくれている。
このような自動整列の他にも、puppet-syntax-vimにはシンタクスハイライトやインデントルールの設定ファイルも含まれているので、vimmerなPuppet使いならおすすめする。
更にミスを減らす
エラー構文を減らすためには以下のような設定をすればいいと思う。
悲しいtypoや動かないコードをpushすることが避けられるので、こちらも併せておすすめする。