まくろぐ
更新: / 作成:

YAML Sort の概要

VS Code に YAML Sort 拡張 をインストールすると、YAML ファイルの内容をキー名でソートすることができます。 主にソート用に使うものですが、YAML フォーマッターとしても利用できます。 次のような簡単なカスタマイズを行うこともできます。

  • 指定したキーを優先的に上から並べる
  • 1 階層目の各キーの間に空白行を入れる
  • リスト要素をソートする

YAML Sort の使い方

YAML Sort のページで Install ボタンを押すだけで、VS Code への拡張のインストールは完了です。 ここでは、次のような YAML ファイルをソートしてみます。

sample.yml(ソート前)
root2:
  ccc: 300
  aaa: 100
  bbb: 200

root1:
  fruits:
    - grape
    - apple
    - banana
  animals: ['wolf', 'fox', 'dolphin', 'eagle']

VS Code で YAML ファイルを開いた状態で、コマンドパレットを開いて (Ctrl/Cmd + Shift + P)、YAML Sort: Sort YAML を選択すると、YAML ファイルの内容がソートされます。

sample.yml(ソート後)
---
root1:
  animals: ['wolf', 'fox', 'dolphin', 'eagle']
  fruits:
    - grape
    - apple
    - banana
root2:
  aaa: 100
  bbb: 200
  ccc: 300

先頭行に自動でセパレーター (---) が挿入され、すべてのキーがアルファベット順にソートされていることが分かります。 キー間の空白行はすべて削除されています。 一方で、リスト要素は自動ではソートされないようです(順番が意味を持つことがあるので当然ですが)。

YAML Sort のカスタマイズ

ソート方法は VS Code の設定ファイルでカスタマイズできるのですが、プロジェクトごと(あるいは YAML ファイルごと)に、ソート方法のルールは変わってくるはずなので、ワークスペース設定ファイル (<Project>/.vscode/settings.json) で設定するのがよいでしょう(参考: VS Code の設定ファイルの場所)。 ワークスペース設定ファイルは次のように開くことができます。

  1. Ctrl/Cmd + Shift + P でコマンドパレットを開く
  2. Preferences: Open Workspace Settings (JSON) を選択

設定可能な項目は 公式サイト を参照してください。 以下、いくつか設定例を示しておきます。

優先的に並べるキーを指定する (customSortKeywords_1)

<Project>/.vscode/settings.json
{
  "vscode-yaml-sort.customSortKeywords_1": ["id", "name"]
}

"vscode-yaml-sort.customSortKeywords_1" というプロパティで、1 階層目のキーのソート順序を定義することができます。 残念ながら、2 階層目移行のキーは指定できないようです。 この設定を使ってソートするには、コマンドパレットから YAML Sort: Sort YAML を選択する代わりに、YAML Sort: Custom sort 1 を選択します。 プロパティ名の末尾の数字を 23 と変えることで、複数のカスタムソート設定を定義しておくことができます。

キー間に空行を入れる (emptyLinesUntilLevel)

<Project>/.vscode/settings.json
{
  "vscode-yaml-sort.emptyLinesUntilLevel": 1
}

"vscode-yaml-sort.emptyLinesUntilLevel" プロパティに 1 以上の数値を設定しておくと、その階層まで、各キー間に空白行が入るようになります。 上記の設定例の場合、ルート階層(1 階層目)のキー間に空白行が入ります。

関連記事

まくろぐ
サイトマップまくへのメッセージ