こんにちは、株式会社Gizumoでエンジニアをしている田中です。
私が複数現場常駐してきた中で、便利なのに使っている人は少なくもったいないなと感じたコードリーディング特化のVSCode
ショートカットをピックアップして今回は紹介したいと思います。
目次
前提・対象とする読者
この記事は以下を前提として読み進めてください。
- サンプルコードは
React
とTypeScript
で記述 - コードの参考に一部OSSのbulletproof-reactを使用
- コードリーディングに特化したショートカットのみに焦点を当てているため、「option + 上下矢印」など「
VSCode
を使用する上で便利」なショートカットについては触れない command
はCmd
、control
はCtrl
と表記- ※自身のPCや
VSCode
、それ以外のアプリケーションで独自のキーバインディング設定をしている場合、正常に動作しない可能性がある
また、対象とする読者は以下のような方を想定しています。
VSCode
を使用している方全般
コードリーディングの手順
実装の参考や設計を勉強する際に、コードリーディングを行うことが多々あります。GitHub
でそのまま行うことも可能ですがやはりコードエディター上で行う方が便利です。
何はともあれgit clone
これはOSSのコードもしくは自社のコードを読む場合に限られますが、まずはgit clone
してローカルにコードを落とします。
git clone hogehoge(githubから取得したurl)
VSCode
で開く
git clone
したコードをVSCode
で開きます。
code hogehoge(クローンしたディレクトリ)
以上で準備完了
以上でコードリーディングの準備は完了です。あとはVSCode
のショートカットを駆使してコードリーディングを行います。
個人的に大事にしている考え方
「コードはシンボルの集まりであり、それが連続しているものとして捉える」を大事な軸として普段コードリーディングを行っています。「シンボル」はある一定の塊を指し「変数名」「関数名」「クラス名」などの宣言がそれに該当します。連続しているとはパズルのようにシンボルが組み合わさってコードが作られている様を指します。
ファイルを探すときやファイルで宣言を探すときにスクロールで探していくと余計な情報で脳のリソースを浪費してしまいます。スクロールする中で無数のコードに対して必要か不要かの判断を毎度下すのはなかなかの重労働なのでできれば避けたいところです。できるだけコードに対して機械的にアプローチして脳のリソースを節約します。
ショートカット一覧
初めに、今回紹介するショートカットを重要度順に記載します。どれも大事なので、重要度上限を「超」から始め、下限を「中」としています。
機能 | ショートカット | 重要度 |
---|---|---|
定義元へジャンプ | F12 | 超 |
参照一覧を表示 | Shift + F12 | 超 |
前のファイルに戻す | Ctrl + Tab | 高 |
カーソル位置を戻す | Ctrl + - or Alt + ← | 高 |
カーソル位置を進める | Ctrl + Shift + - or Alt + → | 高 |
ファイル検索 | Cmd + P or Ctrl + P | 高 |
シンボル検索 | Cmd + Shift + O or Ctrl + Shift + O | 高 |
行検索 | Ctrl + G | 中 |
ファイルの横移動 | Cmd + Option + ←→ or Ctrl + Tab (次のタブ)、Ctrl + Shift + Tab (前のタブ) | 中 |
定義元へジャンプ 重要度:超
Mac | Windows |
---|---|
F12 | F12 |
シンボルにカーソルを合わせF12
を押すと、定義元にジャンプします。Cmd(or Ctrl) + クリック
でも同じことが可能です。気になるコードがあればまずこのショートカットから開始します。とても多用します。
// 定義元
const hoge = () => {
return 'hoge'
}
// カーソルを合わせてF12を押すと、定義元にカーソルが移動する
hoge()
参照一覧を表示 重要度:超
Mac | Windows |
---|---|
Shift + F12 | Shift + F12 |
シンボルにカーソルを合わせてShift + F12
を押すと、そのシンボルの参照一覧が表示されます。これを使うことでそのシンボルがどこで使われているのか、どのように使われているのかが把握できます。また、「>」は右矢印で開閉、下矢印で次のファイルを閲覧、エンターでそのファイル(シンボル)にジャンプします。ファイルをジャンプせずに閲覧したいときは多くそのような時に多用します。
前のファイルに戻る 重要度:高
Mac | Windows |
---|---|
Ctrl + Tab | Ctrl + Tab |
参照先へジャンプした後前のファイルに戻りたい場合使用します。複数回押すことで複数ファイル戻ることも可能です。定義ジャンプとセットで多用します。
カーソル位置を戻す 重要度:高
Mac | Windows |
---|---|
Ctrl + - | Alt + ← |
ファイル間関係なく参照元へ戻りたい時に使用します。複数回押すことで複数カーソル位置を戻すことが可能です。以下のカーソル位置を進めるとセットで多用します。ここまで覚えればほとんどマウス操作することなくコードを追うことが可能になります。
// 2. ctrl + -で元のカーソル位置へ戻る
const foo = () => {...}
hoge(() => {
// 1. fooの定義元へジャンプ
// 3. fooの定義元から戻ってくる
foo()
})
カーソル位置を進める 重要度:高
Mac | Windows |
---|---|
Ctrl + Shift + - | Alt + → |
Ctrl + -
の逆です。カーソル位置を進めることができます。
ファイル検索 重要度:高
Mac | Windows |
---|---|
Cmd + P | Ctrl + P |
ファイル名を入力することで、そのファイルを開くことができます。ファイル名の一部を入力することで、そのファイルを絞り込むことも可能です。これを使うことでファイルを開くときにVSCode
のサイドバーをスクロールする必要はなくなります。
※ 未入力状態は直近で開いたファイル順に表示
シンボル検索 重要度:高
Mac | Windows |
---|---|
Cmd + Shift + O | Ctrl + Shift + O |
シンボル名を入力+Enterを押すことで、そのシンボルにジャンプできます。ファイル検索と同様に、シンボル名の一部を入力することで、そのシンボルを絞り込むことも可能です。未入力状態でシンボル一覧を表示できるためファイル内のスクロールが不要になります。
行検索 重要度:中
Mac | Windows |
---|---|
Ctrl + G | Ctrl + G |
行番号を入力することで、その行にジャンプできます。行数が少ないときは不要なことが多いですが、極力スクロールを避け機械的にコードに対してアプローチすることを目指します。Pull Request
の指摘があった行へジャンプする等のユースケースが存在します。
ファイルの横移動 重要度:中
Mac | Windows |
---|---|
Cmd + Option + ←→ | Ctrl + Tab (次のタブ)、Ctrl + Shift + Tab (前のタブ) |
左右のファイルに移動できます。Ctrl + Tab
等でファイルへ移動しにくい時に便利です。GoogleChrome等でも同じショートカットが利用できます。
最後に
いかがだったでしょうか?開発系のショートカットは有名かつ語り尽くされていると思い、今回はコードリーディングに絞って紹介してみました。少しでも読んでくださった方のためになれば幸いです。ありがとうございました。