VS Codeの使えそうな機能を何回かに分けて記事に整理していく。
今回は、検索機能について補足。
環境
- Windows 11 Home 23H2
- Visual Studio Code 1.90
検索ビューでの高度な検索
検索ビュー(Ctrl+Shift+F)についての高度な検索について説明。
- 以下のいずれかの操作で、検索時に[含めるファイル]と[除外するファイル]の指定が実行可能になる
- 検索キーワード欄外の右下にある[詳細検索の切り替え]、

- 検索キーワード欄にフォーカスがある状態で、Shift+Ctrl+J
- 検索キーワード欄外の右下にある[詳細検索の切り替え]、
- [含めるファイル]や[除外するファイル]の条件を指定する時、
- 複数条件を入力するには、”,(カンマ)”を用いる
- パス区切りは、”/(スラッシュ)”を用いる
- フォルダやファイルの指定には、globパターンを使用できる (globパターン参照)
- 除外するフォルダやファイルを事前設定するには、settings.jsonのfiles.excludeやsearch.excludeを定義する(設定参照)
- [除外するファイル]入力欄内の右端にある[除外設定を使用してファイルを無視]をONにすると、.gitignoreやsettings.jsonのfiles.excludeやsearch.excludeで設定したファイルを無視する
正規表現を用いた置換テクニック
検索ウィジェットの[正規表現を使用する]を用いると、以下のような置換もできるようになる。
一致する部分の再利用
検索時に、正規表現で一致したグループを再利用する。
例.
以下のように指定して置換を実行すると、対象が結果のように置き換わる。
- 検索:^(\w+):[^]:(\d+).* // 最初の:(コロン)までの文字列…1グループ目($1)、2つ目の:直後の数値…2グループ目($2)
- 置換:$2 – $1 // 2グループ目 – 1グループ目 に置換
// 対象
shutdown:x:1:0:shutdown:/sbin:/sbin/shutdown
halt:x:2:0:halt:/sbin:/sbin/halt
// 結果
1 - shutdown
2 - halt
大文字/小文字の置換
正規表現を使用して大文字/小文字を置換することができる。
- \u…正規表現で一致したグループの1文字を大文字に置換
- \l…正規表現で一致したグループの1文字を小文字に置換
- \U…正規表現で一致したグループを大文字に置換
- \L…正規表現で一致したグループを小文字に置換
例.
以下のように指定して置換を実行すると、対象が結果のように置き換わる。
- 検索:(hello)(.*) // hello…1グループ目($1)、hello以降の文字列…2グループ目($2)
- 置換:\l\u$1\U$2! // 1グループ目の1文字目を小文字に置換、2文字目を大文字に置換、2グループ目をすべて大文字に置換
// 対象
Hello world!
Hello visual studio code!
// 結果
hEllo WORLD!
hEllo VISUAL STUDIO CODE!
globパターン
VS Codeで使用するglobパターンについてまとめる。
| 文字 | 意味 |
| * | 0文字以上の任意の文字 |
| ? | 1文字の任意の文字 |
| ** | 0個以上のパスセグメント |
| {} | グループ条件 |
| [] | 文字列の範囲 |
| [!…] | 文字列の範囲の否定 |
例1.{\*\*/\*.html,\*\*/\*.txt}
- {}はグループ条件なので、\*\*/\*.html、もしくは \*\*/\*.txt の意味
- **/*.htmlは、任意のパスのすべてのhtmlファイル
- **/*.txtは、任意のパスのすべてのtxtファイル
→ すべてのhtmlとすべてのtxtファイルを表す
例2.example.[0-9]はexample0、example1,…
- [0-9]は、0, 1, 2, …, 9の任意の数字の意味
→ example.0, example.1, example.2, …, example.9を表す
例3.example.[!0-9]
- [!0-9]は、0, 1, 2, …9以外の文字の意味
→ example.a、example.bを表す (example.0は含まれない)
設定
files.exclude
エクスプローラビューから除外する(非表示にする)フォルダやファイルのglobパターンを指定する。
デフォルト値は以下の通り。
// settings.json
"files.exclude": {
"**/.git": true, // .git除外
"**/.svn": true, // .svn除外
"**/.hg": true, // .hg除外
"**/CVS": true, // CVS除外
"**/.DS_Store": true, // .DS_Store除外
"**/Thumbs.db": true // Thumbs.db除外
},
search.exclude
検索から除外するフォルダやファイルのglobパターンを指定する。
デフォルト値は以下の通りで、files.excludeの値も継承する。
// settings.json
"search.exclude": {
"**/node_modules": true, // node_modules除外
"**/bower_components": true, // bower_components除外
"**/*.code-search": true // .code-search除外
},
参考

Visual Studio Code tips and tricks
Visual Studio Code Tips and Tricks for power users.

Basic editing
Learn about the basic editing features of Visual Studio Code. Search, multiple selection, code formatting.

User and workspace settings
How to modify Visual Studio Code User and Workspace Settings.
