背景
VSCodeの全プルダウンメニューを整理していて、Ctrl+P(ファイルに移動)が単なるファイル検索以上の機能を持っていることを再確認しました。入力欄の先頭に付ける記号によって検索モードが切り替わる仕組みを整理します。
1. プレフィックスなし:ファジー検索でファイル名を探す
Ctrl+P → article (そのまま入力)
ファイル名の一部を入力するだけで、部分一致・あいまい一致(fuzzy検索)でファイル候補が絞り込まれます。フォルダ構造を辿るより高速です。
2. @ で現在ファイル内のシンボル検索
Ctrl+P → @handleClick
@に続けて関数名やクラス名を入力すると、開いているファイル内のシンボル一覧から絞り込めます。Ctrl+Shift+O(エディター内のシンボルへ移動)と同じ機能を、Ctrl+Pから連続して呼び出せる点が地味に便利です。
3. # でワークスペース全体のシンボル検索
Ctrl+P → #UserService
@がカレントファイル限定なのに対し、#はワークスペース全体を対象にシンボルを検索します。「このクラス、どのファイルにあったっけ」を調べる際に、ファイル名が分からなくてもクラス名だけで直接ジャンプできます。
4. : で行番号へ直接ジャンプ
Ctrl+P → :245
スタックトレースに「line 245」のようなエラー行が出ている場合、Ctrl+Gを別途呼ばなくてもCtrl+Pから:と行番号を打つだけでジャンプできます。
5. > でコマンドパレットに切り替え
Ctrl+P → >Format Document
Ctrl+Pの入力欄で>から始めると、その場でCtrl+Shift+P(コマンドパレット)と同じ検索に切り替わります。ファイルを探している途中で「あ、コマンドを実行したい」と思ったときに、ダイアログを閉じて開き直す必要がありません。
まとめ
Ctrl+Pは単なるファイル検索ではなく、@ # : >という4つのプレフィックスで検索対象そのものを切り替えられる、実質5機能を1つのショートカットに集約したUIでした。1つのキーバインドを覚えるだけで複数の操作系統をカバーできるため、覚えるショートカットの総数を減らす効果もあります。メニュー全8カテゴリの網羅的な一覧は元記事にまとめています。