VScodeでファイルの表示・検索・監視のExclude設定をする
ファイルの多いディレクトリをVScodeで開くと動作が重くなったり、grep検索の結果が見づらくなります。その対策として各種Exclude設定を調べたのでメモします。versionは以下を想定。
- vscode == 1.51.1
globパターンの記述
Exclude設定には、globと呼ばれるファイル名のパターンマッチングを表現するルールを使用します。globについては以下が詳しそうです。
正規表現ほど柔軟ではないですが、ファイル名のパターンマッチングでそこまで複雑な操作をすることは稀なので、十分使える表現です。UNIXのglobでは主に以下の表現が使えます。
記号 | 概要 | 使用例(要求) | |
---|---|---|---|
* | 0文字以上の任意の文字列にマッチ | 拡張子.txtのファイル | *.txt |
? | 任意の1文字にマッチ | 先頭が任意、その後"001"と続くファイル | ?001 |
[ ] | [ ]に含まれるいずれか1文字にマッチ | "test0~test9"のファイル | test[0-9] |
! | パターンの否定 | A~Zで始まるファイル以外 | [!A-Z]* |
** | 指定ディレクトリ以下を再起的に探索してマッチ | "AA"ディレクトリ以下の.txtファイル | AA/**/*.txt |
Exclude設定
エクスプローラの表示ファイルから除外(Files: Exclude)
VScodeでディレクトリを開いたときに、エクスプローラに表示されるファイルを除外することができます。ライブラリや設定ファイルを検索から除外するときに有効です。
Ctrl+,
(macならCmd+,
)で設定タブを開き、検索窓にfiles.exclude
と入力すると該当の設定項目が開けます。
「パターンを追加」をクリックし、glob形式で除外したいファイルを記述します。setting.json
に以下のように記述しても同様の設定が可能です。
{ "search.exclude": { "**/.git": true, "**/.svn": true, "**/.hg": true, "**/CSV": true, "**/.DS_Store": true, } }
検索結果から特定ファイルを除外(Search: Exclude)
VScodeでは開いたディレクトリ内でgrep検索が可能ですが、予め特定のファイルを検索対象から除外することができます。
設定タブから検索窓にsearch.exclude
と入力し、設定します。
検索時に「除外するファイル」の右にあるスイッチをONにすると設定を反映した検索が可能です。(ここで検索毎に除外ファイルを指定することも可能です)
監視ファイルを除外(Files: Watcher Exclude)
VSCodeは使用中の動作を高速化するために、起動時にメモリを消費してディレクトリ内をある程度読み出してから起動します。サイズの大きいディレクトリを開こうとするとその分メモリを多く消費しますが、VSCodeが監視するファイルを除外するとこれを緩和できます。
設定タブから検索窓に'search.watcher'と入力し、設定します。設定後は再起動が必要です。
注意点
便利なexclude設定ですが、現状では例外設定がやりにくいです。例えばAAA
ディレクトリは検索から除外したいけど、AAA
ディレクトリ内のBBB
だけは表示したい、といったときに
{ "search.exclude": { "AAA/*": true, "!AAA/BBB": true, } }
とか書くとできそうな気がしますが、環境によってできたりできなかったりするようです。これに関しては以下のissueで報告されています。
2015年にOpenして未だにCloseしていないのでMicrosoft的には優先度が低いバグなのかもしれません。我こそはという人は修正してpull requestしていただけると自分も助かります。。
まとめ
3つのExclude設定について述べました。VScodeはデフォルトでもそれなりに使い勝手の良いエディタですが、細かい設定をするとより扱い易くなります。進捗が出ないときなんかは息抜きに調べてみると良い気分転換になるのでおすすめです。