[Rails] Unite.vimでSettingsLogicの長いキー名を入力する(unite-yaml)
Railsで定数を管理する場合、SettingsLogicを使っていますが、プロジェクトが大きくなるとYAMLのキーが多くなったり、階層が深くなったりして入力が手間になってきます。 先週、Typoして時間をムダにしたのでUnite.vimでSettingsLogicのキー名を入力するUniteSource、unite-yamlを作ってみました。
unite-yaml
unite-yamlを使うと、SettingsLogicで Settings.somekey.subkey.subsubkey.subsubsubkey のような長いキーをUniteの候補として選択、入力を行えます。
インストール
インストールはBundle、またはNeoBundleでmonochromegane/unite-yamlを指定してください。
Bundleの場合は、.vimrcにBundle "monochromegane/unite-yaml”を定義して、 :BundleInstallです。
使い方
1. YAMLファイルを選択する
以下のコマンドでカレントディレクトリ以下の*.ymlファイルが検索され、Uniteのウィンドウに表示されます。
:Unite yaml-list

対象のYAMLファイルを選択し、Enterを押してください。
unite-yamlはERB enabled YAMLもサポートしています。
2. 入力したいYAMLのキーを選択する
選択したYAMLファイルに定義されているキーの一覧がSettingsLogicのフォーマット(アクセサのキーチェーン)で表示されます。 また、キー名のあとには該当する値も表示されます。
以下のYAMLファイルを選択した場合
# config/application.yml
defaults: &defaults
  cool:
    saweet: nested settings
  neat_setting: 24
  awesome_setting: <%= "Did you know 5 + 5 = #{5 + 5}?" %>
development:
  <<: *defaults
  neat_setting: 800
test:
  <<: *defaults
production:
  <<: *defaults
このように展開されます。

入力したいキー名を選択して、Enterを押すと、カーソル位置にキー名が入力されます(値は含まれません)
キーバインド
以下のようなキーバインドをvimrcに定義しておくといいでしょう。
" yaml
let g:unite_yaml_prefix = "Settings."
nnoremap <silent> ,y  :<C-u>Unite yaml-list<CR>
nnoremap <silent> ,Y  :<C-u>UniteResume yaml-buffer<CR>
- yaml-listから開いたYAMLのキー一覧はyaml-bufferという名前のbufferで開かれているので上記のようにUniteResumeを使ってYAMLの再パースなしに再度呼び出すことができます。
- g:unite_yaml_prefixを定義すると、入力時のキー名の前に指定した語が追加されます。- Settings.を指定することで入力の手間を省くことができます。
SettingsLogicは便利ですが、キーの打ち間違いや定義されているキーを見比べるためにファイル間を行ったり来たりして時間をムダにしがちです。 Unite.vimを使っている人は、unite-yamlを導入してみてはどうでしょうか。
