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 が有効な場合)- 検索エディターのパターン
たとえば、build/ のようなパターンの .gitignore ファイルがある場合、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 構文がサポートされることを期待している場合は、ユースケースを添えて issue を報告することができます。
glob パターンが機能しないのはなぜですか?
Windows では、パスの区切りに \ ではなく / を使用していることを確認してください。VS Code の glob パターンでは、パスの区切りに / が必要ですが、パス内の / と \ の両方に一致します。
[ や ] などの特殊文字に文字どおり一致させようとする場合は、パターンマッチングで解釈されないように、特殊文字を角括弧 (1 文字の範囲) の中に配置してエスケープします。バックスラッシュではエスケープされません。たとえば、src/routes/post/[id]/ の下にあるファイルに一致させるには、パターン src/routes/post/[[]id[]]/** を使用します。