YAMLの構文強調・インデントを行うVimプラグインを作ってみた

はじめに

Vim標準のYAMLのインデントルールが気に入らなかったので、Vim script の勉強がてらにプラグインを作ってみました。 YAMLの構文は、YAML Ain’t Markup Language (YAML™) Version 1.2 を参考にしています。プラグインのソースは、 Github: mrk21/yaml-vim にあります。

プラグインの概要

このプラグインを導入することによって、次のインデントスタイルが可能になります。

---
# ブロックシーケンスとブロックマッピングを同じラインに書く
- name: create file
  command: >
    creates=/path/to/file
    touch /path/to/file

# ブロックシーケンスの"-"の後にスペースを入れないで改行
-
  name: install packages
  apt: name={{item}} state=present
  with_items:
    - package1
    - package2
---
# トップドメインのブロックスカラー
>
  ブロックスカラーの値

また、次の構文強調が追加されています。

  • ブロックスカラー: >, |
  • 後にスペースが存在しないブロックシーケンス: -

使い方

.vimrcプラグインをロードする設定を記述するだけです。

NeoBundle 'mrk21/yaml-vim'

最後に

Vimの構文強調は正規表現で単語を抜き出して行うので、こういったインデントによって意味合いが変わる言語は難しいですね。例えば、ブロックスカラーの値の部分のハイライトはおそらく無理でしょう。