言語と参照のインジェクション
言語インジェクションを使用すると、ファイルのメイン言語とは異なるプログラミング言語のコードを操作できます。
WebStorm は、HTML、CSS、XML、JSON、RegExp、その他のコードフラグメントを、文字列やテンプレートリテラル内、または XML 系言語のタグや属性内で編集するための包括的な言語支援を提供します。
IDE は、言語インジェクションに加えて、文字列リテラルをクラスやファイルなどの他のエンティティへの参照として扱う参照インジェクションもサポートしています。
言語インジェクションを追加する
一時的な言語インジェクションを追加する
言語を挿入したい文字列、テンプレートリテラル、タグ、または属性内にキャレットを配置し、 Alt+Enter を押します(または インテンションアクション アイコン
を使用します)。
言語または参照の挿入 を選択し、インジェクションする言語を選択します。

永続的な言語インジェクションを追加する
言語インジェクションコメント (アノテーション) を使用して、インジェクションされた言語の永続的なフラグメントを追加します。
言語をインジェクションするとき、WebStorm はアノテーションの追加を提案します。 提案を受け入れるには Alt+Enter を押します。
ターゲット文字列リテラルの前に空白行を追加し、次のコメントを入力してください:
language=<language_ID>コメントには、挿入したい言語の構文を使ってください。 言語 ID は一般的に直感的で、例えば SQL、RegExp、XML、HTML です。
設定で言語 ID を確認することもできます。 Ctrl+Alt+S を押して設定を開き、 を選択します。 言語のインジェクションルールをダブルクリックすると、言語 ID が ID フィールドに指定されます。
(オプション) コメントに接頭辞または接尾辞を含めます。
// language=<language_ID> prefix=<prefix> suffix=<suffix>これは次の場合に必要です:
文字列は不完全 / 部分的な SQL 文です
文字列は、サポートされている呼び出し(
select /where)など)で直接使用されていません。
挿入された言語フラグメントを編集する
WebStorm を使うと、専用エディターでインジェクションされた言語フラグメントを編集できます。
フラグメントエディターを開く
挿入されたコード部分内にキャレットを置き、 Alt+Enter を押します(または インテンションアクション アイコン
を使用します)。
<言語 ID> フラグメントの編集 を選択します。
WebStorm は、インジェクションされた言語でコードを編集するための専用エディターセクションを開きます。 このエディターは、コード補完、インスペクション、インテンションアクション 、コードスタイルアクションなどを含む完全なコーディング支援を提供します。
参照を挿入する
参照挿入は、文字列リテラルを他のファイルへのリンクとして解釈します。
例: 任意のリテラル文字列内のファイルパスは、ファイルへの参照として扱うことができます。
一時的な参照インジェクションを追加する
参照をインジェクションしたい文字列またはテンプレートリテラル内にキャレットを置き、 Alt+Enter を押します(または インテンションアクション アイコン
を使用します)。
言語または参照の挿入 を選択して、たとえば次のようなオプションを選択してください:
ファイル参照: 指定されたファイルへの参照を追加します。
インストールされているプラグインによっては、他の参照オプションも利用できる場合があります。
永続的な参照インジェクションを追加する
コメントを使用して永続的な参照インジェクションを追加します。
ターゲット文字列リテラルの前に空白行を追加し、必要な値を含む
// language=コメントを入力します。// language=file-referenceはファイルへの参照を追加します。
インジェクションをキャンセルする
コードフラグメントにキャレットを置き、 Alt+Enter を押して、リストから を選択します。

あるいは、インジェクションコメントを削除するだけです。
インテンションアクションバルブアイコンを無効にする
エディターでインテンションアクションアイコン を非表示にするには、次の手順を実行します。
Ctrl+Alt+S を押して設定を開き、 を選択します。
インテンションバルブを表示する チェックボックスをオフにします。
変更を適用し、ダイアログを閉じます。
自動インジェクションのルールを構成する
WebStorm には、IDE がコード内の特定の場所に自動的に言語を挿入するための事前定義済みルールのセットがあります。
エディター | 言語インジェクション 設定ページ Ctrl+Alt+S で言語インジェクションルールを設定できます。
定義済みのすべてのインジェクションルールは ビルトイン スコープ用に設定されています。 言い換えると、それらはグローバル(つまりすべての WebStorm プロジェクトで使用可能)です。 カスタムルールは IDE または 1 つのプロジェクトに対してのみ設定できます。 カスタムインジェクションの範囲を変更するには、 を使用してください。
VCS を介してカスタムルールを共有するには、ツールバーの対応するオプションを使用して、カスタムルールを プロジェクト スコープに移動します。 そうすることで、バージョン管理下に置くことができるカスタムルールを使用して IntelliLang.xml という名前の新しいファイルを .idea ディレクトリに作成します。

VCS を使用しない場合は、ルールを XML ファイルにエクスポートして(ツールバーの をクリック)、別のプロジェクトにインポートすることで、ルールを共有できます。
カスタムインジェクションルールを設定するには、 をクリックして新しいルールを追加するか、あらかじめ定義されたルールをコピーして設定を変更します。
カスタムインジェクションルールの設定
次のいずれかを実行します:
新しいルールを作成するには、ツールバーの
をクリックし、ルールを適用するコンテキストを選択します。

既存のルールを編集するには、そのルールを選択し、ツールバーの
をクリックします。

既存のルールに基づいてルールを作成するには、ベースとなるルールを選択し、ツールバーの
をクリックし、コピーを選択してツールバーの
をクリックします。

言語インジェクション設定 ダイアログが開きます。 ダイアログ内のコントロールは、選択したインジェクションタイプによって異なります。
インジェクションする言語の ID または名前を指定してください。
オプションで、挿入の前後に追加する文字シーケンスである接頭辞と接尾辞を指定します。 これは、不完全な断片をラップするために必要になる場合があります。 次のコード断片があるとします。
const query = "SELECT * FROM users WHERE id = ?";接頭辞として
SELECT、接尾辞として;を挿入できます。 あるいは、挿入言語としてJSONを選択した場合は、接頭辞と接尾辞として波括弧と{}のペアを指定することもできます。ルールタイプに応じて、 配置パターン または テンプレートタグ フィールドに、WebStorm でリテラルをインジェクションとして認識させたいコンテキストを定義するルールを入力してください。 ルールは、関数引数、変数初期化子、オブジェクトプロパティ、JSX 属性などを対象とすることができます。
例 1 - Any JavaScript string argument
psiParameter().withName("query")例 2 - Tagged template
psiElement(JSStringTemplateExpression)ルールは プログラム構造インターフェースパターンから構築されており、実際には内部 WebStorm 言語のメソッドの連鎖呼び出しです。 プログラム構造インターフェースは、WebStorm が扱うようにファイルの構造を示します。
定義済みのインジェクションルールを編集する場合、パターンはすでに指定されています。 これにより、生産性と使いやすさが向上します。 新しい設定を作成するよりも、これらの設定を利用することをお勧めします。
オプション:
拡張 エリアで、インジェクションルールが適用されるコンテキストをさらに絞り込む追加設定を指定することで、インジェクションプロセスをよりきめ細かく制御できます。
値パターン フィールドに、言語を挿入するコンテキストを決定する正規表現を入力します。 パターンの最初のキャプチャーグループを挿入対象として使用することで、特定のパターンに一致する値、パターンに一致する複数の部分にのみ言語を挿入するように手順を構成できます。
例:
^javascript:(.*)は、ハイパーリンクの hrefs で JavaScript コードを実行するために使用できるjavascriptプロトコルと一致します。単一ファイル - このオプションがオフの場合、値のパターンに一致するフラグメントは、たとえばフラグメントエディターの観点から、別々の「ファイル」として別々に扱われます。
このオプションがオンの場合、対応するフラグメントはすべてマージされて単一のユニット、つまり「ファイル」になります。
値のパターンを考える
xxx (.+) yyy (.+) zzzそしてフラグメント
xxx select * yyy from family zzz,このオプションがオフの場合、
select *とfrom familyは 2 つの独立したフラグメント(または「ファイル」)として扱われます。 このオプションがオンの場合、select * from familyは単一のユニットまたは「ファイル」として扱われます。
For XML タグ and XML 属性 injection rules, see 言語インジェクション設定ダイアログ: XML タグの挿入 and 言語インジェクション設定ダイアログ: XML 属性の挿入。