PyCharm 2026.3 Help

YAML

PyCharm を使用すると、YAML ファイル( .yml 、 .yaml )を操作でき、次の機能がサポートされます:

エディターで利用可能な YAML 固有の機能をいくつか見てみましょう。

アンカーとエイリアス

PyCharm は、アンカーとエイリアスの使用をサポートしています。 YAML ファイルで新しいアンカーを指定すると、エディターはこのアンカーがどのノードでも使用されていないという警告を表示します。

YAML: 未使用のアンカー警告

エディターを使用すると、このアンカーのエイリアスを 完成させることができます。

YAML: 完全なエイリアス

アンカーの使用箇所をすばやく見つけるには、アンカー上にキャレットを置き、 Ctrl+B を押します。

YAML: エイリアスに移動する

PyCharm はアンカーとエイリアスに対して リネームリファクタリングをサポートしています。キャレットをアンカーに置いて Shift+F6 を押してください。 または、アンカーを右クリックして リファクタリング | 名前の変更 を選択してください。

renaming the YAML anchor

構造 ツールウィンドウ (Alt+7) を使用して、YAML ファイル内をすばやく移動します。 構造 ツールウィンドウで再利用されたアンカーの要素を表示または非表示にするには、 ビューオプション use エイリアスされたサブツリー をクリックします。

YAML 構造ビュー

JSON スキーマ

PyCharm は、JSON スキーマを使用した YAML ファイルのコード補完およびインスペクションをサポートします。 PyCharm は、ファイルの場所や構造に基づいてスキーマを自動的に推測できますし、 手動で選択することもできます。 例えば、 .github/workflows ディレクトリに GitHub Actions ワークフローファイルがある場合、PyCharm は、 schemastore.org から自動的に読み込まれた github-workflow.json スキーマに基づいてオプションの補完を提案します:

YAML: スキーマに基づいて完成

設定 ダイアログ (Ctrl+Alt+S) の 言語 & フレームワーク | スキーマおよび DTD | リモート JSON スキーマ ページを使用して、JSON スキーマのロードを管理できます。

必要に応じて、 言語 & フレームワーク | スキーマと DTD | JSON スキーママッピング で必要なスキーマファイルへのパスを指定できます。

ファイルの JSON スキーマを選択する

特定のファイルにカスタムスキーマを指定できます。

  1. ステータスバーのスキーマスイッチャーをクリックします。

    ファイルのスキーマを選択する
  2. 表示されたリストで、提案されたスキーマのいずれかを選択するか、 新規スキーママッピング… をクリックします。 これにより、ファイルのローカルスキーマまたはリモートスキーマを指定できる JSON スキーママッピング​ 設定が開きます。

スキーマからプロパティを取得する

PyCharm が YAML ファイルのスキーマを検出した場合、専用アクションを使えばすべてのプロパティをそのファイルに素早く挿入でき、手入力する必要がなくなります。

  • スキーマに必須のプロパティが含まれており、これらの特定のプロパティのみを挿入したい場合は、ファイル内の任意の場所で Alt+Enter (コンテキストアクションの表示) を押し、 欠落しているプロパティの追加 を選択します。

  • スキーマで使用可能なすべてのプロパティを挿入する場合は、ファイル内の任意の場所で Alt+Enter (コンテキストアクションの表示) を押し、 JSON スキーマからすべてのプロパティを入力 を選択します。

$schema キーワードを使用する

ファイル自体でスキーマを参照することもできます。

  1. ファイルの先頭に # $schema: と入力します。

  2. スキーマファイルの名前の入力を開始します。 schemastore.org から読み込まれたスキーマの名前の補完を利用できます。

    ローカルスキーマファイルを使用する場合は、スキーマを使用するファイルに対する相対パスを指定します (例: # $schema: ./my-schema.json)。 これにより、インスペクション、補完、プロパティ入力アクションなど、リモートスキーマを使用する場合と同じコーディング支援が可能になります。

    Completion from local schema

キーのコピー

PyCharm は、YAML ファイルで指定された特定のオプションへのフルパスをコピーする機能を提供します。 これは 2 つの方法で実行できます。

  • 必要なキーにキャレットを置き、 Ctrl+Alt+Shift+C を押します。

  • 必要なキーにカーソルを合わせ、右クリックして 参照をコピー を選択します。

YAML: 参照をコピー

例: 上のイメージでは、 default.server.port がコピーされます。

入力ハンドラー

YAML ファイルを編集すると、PyCharm はインデント、シーケンスマーカー、角括弧、引用符を維持します。 次の例では、 <caret> はキャレット位置を示します。

シーケンスマーカー

シーケンス項目の後で Enter を押すと、PyCharm は新しい項目を開始し、 - マーカーを自動的に挿入します:

services: - nginx<caret>
services: - nginx - <caret>

空の項目で Enter をもう一度押すと、PyCharm はマーカーを削除し、ネストされたシーケンス内も含めて、キャレットを親のインデントレベルに移動します。

シーケンス項目にマッピングが含まれている場合、 Enter を押すと、マーカー挿入がオンになっていても、追加のマーカーを加えずに新しいインデント行でマッピングを続行します:

services: - name: web<caret> - name: db
services: - name: web <caret> - name: db

空の項目を削除するには、 - マーカーの後に続くスペースの後で Backspace を押します。 PyCharm は - とそれに続くスペースを単一のアクションで削除します。 同じ行でマーカーの後に値が続く場合でも、PyCharm はマーカーをスペースと一緒に削除し、値はその位置に保持します:

services: - <caret>nginx
services: <caret>nginx

インデント

Enter を押すと、PyCharm は現在の構造に一致するインデントレベルで新しい行を維持します:

  • 値のないキーの後では、新しい行が一段深くインデントされます。

  • キーと値のペアの後では、新しい行は同じレベルに留まります。

  • ブロックスカラーインジケーター (|) の後では、新しい行が一段深くインデントされ、後続の行はそのレベルのままになります。

database:<caret>
database: <caret>

ブロックスカラー内では、新しい行はキーの一段下にある標準のブロックインデント位置に置かれます。 現在の行が手動で過剰にインデントされている場合でも、新しい行は過剰にインデントされたテキストに合わせるのではなく、標準のブロックインデントを使用します。

完了したエントリの下にある空白だけを含む行で Enter を押すと、PyCharm は新しい行を再配置するのではなく、手動で設定したインデントを維持します。

まだ項目がないシーケンス内の空行で、 - に続けてスペースを入力すると、PyCharm はマーカーのインデントを修正します。 インデントシーケンス値 オプションがオンの場合、マーカーは親キーより一段深い位置に配置されます。オプションがオフの場合、マーカーは親キーに揃えられます。 シーケンスにすでに項目が含まれている場合、マーカーは現在のインデントを維持します。 このオプションは、 設定 ダイアログ (Ctrl+Alt+S) の エディター | コードスタイル | YAML ページにあります。

角括弧と引用符

キーまたは値の位置では、PyCharm はフローコレクションと引用符付きスカラーを自動的に閉じます。 [、 {、 " 、または ' を入力すると、PyCharm は対応する文字を挿入し、キャレットをペアの間に置きます:

ports: <caret>
ports: [<caret>]

自動クローズは、新しいキーや値の位置、既存のフローコレクション内の位置など、その文字が YAML 構造トークンを開始する場所にのみ適用されます。 キャレットがプレーンスカラーテキスト内またはその直後にある場合、PyCharm はその文字を通常のテキストとして挿入し、何も閉じません。

閉じる ]、 } 、または引用符を同じ文字の直前に入力すると、PyCharm は重複を挿入する代わりに、キャレットをその文字の後ろへ移動します。 ただし、次の文字がペアになっていない引用符の場合、同じ引用符文字を入力すると、既存の引用符を飛び越えるのではなく新しいペアが作成されます。

空のペアを削除するには、二つの文字の間で Backspace を押すと、PyCharm が両方を削除します。

キーと項目の移動

キー、ネストされたブロック、またはシーケンス項目を移動するには、その上にキャレットを置き、 Ctrl+Shift+Up または Ctrl+Shift+Down を押します。 PyCharm はネストされた内容も含めてエントリ全体を移動し、インデントを正しく維持します:

services: web<caret>: image: nginx db: image: postgres
services: db: image: postgres web<caret>: image: nginx

複数のエントリを選択すると、PyCharm は選択範囲をエントリ全体に拡張し、グループとして移動します。

貼り付け

YAML ファイルに内容を貼り付けると、PyCharm はそれをターゲット構造に合わせて調整します:

  • シーケンスに貼り付けられたプレーンな行は、それぞれ独自の - マーカーを持つ個別の項目になります。

  • 貼り付けた行が - で始まる場合、またはプレフィックス付きの行とプレフィックスなしの行が混在している場合、PyCharm は各行にマーカーが一つだけになるようにマーカーを正規化します。

  • spring.datasource.url のようなドット付きパスは、ネストされたキーに展開されます。

  • 複数行ブロックは、最初の行がキャレットのインデントと一致するように再インデントされ、内側の行は相対的なインデントを維持します。 空行は空のままです。

  • 既存のキーの直前に貼り付けると、PyCharm は貼り付けたブロックを再インデントし、既存のキーを元の列に維持します。

たとえば、マッピング位置に spring.datasource.url を貼り付けます:

config: <caret>
config: spring: datasource: url:<caret>

ドット付きキーの展開をオンまたはオフにするには、 設定 ダイアログ (Ctrl+Alt+S) の エディター | 一般 | スマートキー | YAML ページで 貼り付け時にキーシーケンスを自動展開する オプションを使用します。

2026 年 10 月 30 日