Glob パターンのリファレンス
Visual Studio Code は、多くのコンポーネントで glob パターンを使用しています。例として、検索機能におけるファイルやフォルダーの含める/除外設定、ファイルエクスプローラーでのファイルの非表示や読み取り専用設定、特定のプログラミング言語に関連するファイル関連付けの設定などがあります。
Glob パターンの構文
VS Code は以下の glob 構文をサポートしています
/: パスセグメントを区切る*- パスセグメント内のゼロ個以上の文字に一致する?- パスセグメント内の1文字に一致する**- ゼロ個以上のパスセグメントに一致する{}: 条件をグループ化する(例:{**/*.html,**/*.txt}はすべての HTML ファイルとテキストファイルに一致します)[]: 一致させる文字の範囲を宣言する(example.[0-9]はexample.0,example.1などに一致します)[!...]: 一致させる文字の範囲を除外する(example.[!0-9]はexample.a,example.bには一致しますが、example.0には一致しません)
注: パスは Windows 上であっても \ ではなく / で区切られます。ただし、実際に適用される際、glob パターンはスラッシュとバックスラッシュの両方を含むパスに一致します。
大文字と小文字の区別
Glob パターンの一致動作は、プラットフォームのファイルシステムに基づき異なります
- Windows および macOS: Glob パターンはデフォルトで大文字と小文字を区別しません。例えば、パターン
**/MyFolder/**はmyfolder/、MyFolder/、MYFOLDER/、およびその他の大文字・小文字のバリエーションすべてに一致します。 - Linux: Glob パターンは大文字と小文字を区別します。パターン
**/MyFolder/**は、その正確な大文字・小文字の綴りを持つフォルダーにのみ一致します。
このプラットフォーム依存の動作は、VS Code 内の glob パターンを使用するすべての場所で適用されます。これには以下が含まれます:
- 検索ビューの含める/除外パターン
- files.exclude 設定
- search.exclude 設定
.gitignoreファイルのパターン( explorer.excludeGitIgnore が有効な場合)- 検索エディターのパターン
例えば、.gitignore ファイルに build/ というパターンがある場合、Windows や macOS では build/、Build/、BUILD/ およびその他のバリエーションに一致しますが、Linux では完全一致のみとなります。これにより、ファイルシステムがファイルやフォルダー名を扱う際の一貫した動作が保証されます。
リモート開発: リモートワークスペース(WSL、SSH、dev コンテナーなど)で作業する場合、glob の一致動作はローカルクライアントのオペレーティングシステムではなく、リモート側のファイルシステムのケースセンシティビティ(大文字と小文字の区別)ルールに従います。
特別なケース
検索ビューでの glob パターンは、 files.exclude や search.exclude とは動作が異なります。設定ファイル内では、ワークスペース内の folder1/example というサブフォルダーにある example を指定するには **/example を使用する必要があります。検索ビューでは ** プレフィックスが想定されています。これらの設定内の glob パターンは、常にワークスペースフォルダーのパスを基準として評価されます。
よくある質問
なぜ glob パターンは機能 X や Y をサポートしていないのですか?
私たちは独自の glob 一致ライブラリを実装しました。その目的は、一般的なパターンの多くに対して最適なパフォーマンスを提供することです。特定の glob 構文のサポートが必要な場合は、ユースケースを添えて問題を報告してください。
なぜ glob パターンがうまく動作しないのですか?
Windows 上ではパスを区切るために \ ではなく / を使用していることを確認してください。VS Code の glob パターンはパスの区切りに / を必要としますが、パス内では / と \ の両方に一致します。
[ や ] のような特殊文字を文字通りに一致させたい場合は、その特殊文字を角括弧(単一文字の範囲)で囲んでエスケープし、パターン一致として解釈されないようにしてください。バックスラッシュではエスケープできません。例えば、src/routes/post/[id]/ 配下のファイルに一致させるには、src/routes/post/[[]id[]]/** というパターンを使用します。