pockestrap

Programmer's memo

Serverspec を書きやすくする Vim プラグインをつくった

github.com

経緯

会社で Serverspec 作成 GUI アプリケーションを作る

Serverspec 作成補助アプリケーションをリリースしました | サバカン屋テックブログ

幼女「GUIめんどい、Vimだったら使う」

Vim版を作った

インストール

以下の3つに依存します。

なくても動きますが、最低限 NeoSnippet はインストールすることを推奨します。

インストールには NeoBundle などのプラグインマネージャを使用すると簡単です。

NeoBundle 'Shougo/neosnippet'
NeoBundle 'tyru/open-browser.vim'
NeoBundle 'pocke/serverspec.vim'

つかいかた

Snippet

snippet を使用するには、filetyperuby.serverspecに変更するか、直接snippetのファイルを読み込む必要があります。

:set ft=ruby.serverspec

" or

" パスはいい感じに読み替えて下さい
:NeoBundleSource ~/.vim/bundle/serverspec.vim/neosnippets/ruby.serverspec.snip

すると、下記の動画のようにスニペットを使用することが出来ます。

f:id:Pocke:20151226112632g:plain

このプラグインでは Serverspec のプログラムから snippet を生成しているため、Serverspec で定義されている全ての Resource/matcher に対してのスニペットを使用することが出来ます。

Serverspec - Resource Types

Document

また、このプラグインから Serverspec のドキュメントを開くことが出来ます。

:ServerspecDoc コマンドを実行するとドキュメントのトップページを、:ServerspecDoc userなどと引数を指定すると指定した引数に関するページを開くことが出来ます。

また、ruby インターフェイスが存在すれば引数を補完することができます。

将来展望

将来的には、Ruby のパーサである ripper を使用してオムニ補完関数を作ろうと思っています。
スニペットだとどうしてもその場面で使えない候補も出てきてしまいますが、オムニ補完関数として実装することでそのような問題を起きなくすることができます。

ほか

http://blog.glidenote.com/blog/2014/06/17/serverspec-snippets/

全く同じアプローチのプラグインが既にあったのですが、全ての要素を網羅しているわけではなかったので、これを作りました。