puppet-syntax-vimでattributesを自動整列する

#vim #puppet

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することが避けられるので、こちらも併せておすすめする。

referrence