カンニング万歳!逆引きVS Codeチートシート

# VS Codeとエクステンションの逆引きチートシート

## 最初に

この記事はVS Code(Version 1.13.0)と、その拡張機能であるVimなどのよく使うショートカットキーに関する逆引きチートシートとなっております。拡張機能でカスタマイズされたショートカットの他に、独自のキーボードショートカットを登録している部分もあるので、**該当箇所は斜体**にしておきたいと思います。当方の環境としては、**Mac**を使用しておりますので、Windowsの方には分かりにくい部分も多いかもしれません。ご了承ください。また、英語でも問題ない方は公式でMac対応のショートカット表が出ているのでそちらを見ても良いと思います([公式の表](https://code.visualstudio.com/shortcuts/keyboard-shortcuts-macos.pdf))。

## 逆引きチートシートの推奨する見方

このチートシートを効率良く確認する推奨環境の紹介です。まずディスプレイが二枚以上あると、常にチートシートを表示させながらエディタを操作することができるのでオススメです。また、スクロールを行わずに効率的に作業を進めながらチートシートを確認するために、チートシートのページを普段使いの**ブラウザ以外で文字を小さくして複数ウィンドウに表示させること**をオススメします。[「Spectacle」](https://www.spectacleapp.com/)というアプリをPCに入れるとショートカットキーの押下でウィンドウを簡単に上寄せ半分表示、斜め右上1/4表示などの表示が可能なので、是非使用してみて下さい。この逆引きチートシートでは、キーを特殊文字で表すので、特殊文字なんて覚えていないという方は、覚えるまではキーボードビューアーを画面のどこかに表示させておいて下さい。(キーボードビューアの表示方法は[「Macで記号や特殊文字を入力したい時は「キーボードビューア」と「文字ビューア」を使うと便利！」](http://miki73.com/2015/02/28/mac-keyboardviewer/)を参考にして下さい。)

⌘ Cmd
⌥ Option
⇧ Shift
^ Ctrl

## 共通操作

### 行の編集

| キー           | 動作                             | 備考                                   |
| -------------- | -------------------------------- | -------------------------------------- |
| [⌘]+[X]        | 行の切り取り                     | 未選択状態の行全体を切り取り           |
| [⌘]+[C]        | 行のコピー                       | 未選択状態の行全体をコピー             |
| [⌘]+[⇧]+[K]    | カーソル行を削除                 | 行全体を削除(複数行を選択中は全ての行) |
| [⌘]+[↩︎]       | 現在のカーソル行の下に空行を追加 | カーソルは行頭に移動する               |
| [⌘]+[⇧]+[↩︎]   | 現在のカーソル行の上に空行を追加 | カーソルは行頭に移動する               |
| [⇧]+[⌥]+[Down] | カーソル行を下にコピー           | 複数行を選択中はその行数分             |
| [⌘]+[']']      | 行をインデント                   |                                        |
| [⌘]+['[']      | 行をアンインデント               |                                        |

### 行の移動

| キー         | 動作                                       | 備考                                                                                                                         |
| ------------ | ------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------- |
| *[⌥]+[Down]* | *カーソルをインデントレベルで下に移動する* | *[Indentation Level Movement](https://marketplace.visualstudio.com/items?itemName=kaiwood.indentation-level-movement)の機能* |
| *[⌥]+[Up]*   | *カーソルをインデントレベルで上に移動する* | *[Indentation Level Movement](https://marketplace.visualstudio.com/items?itemName=kaiwood.indentation-level-movement)の機能* |

### 行の選択

| キー             | 動作     | 備考 |
| ---------------- | -------- | ---- |
| [⇧]+[⌥]+ドラッグ | 矩形選択 |      |

### コメントの編集

| キー        | 動作                         | 備考                       |
| ----------- | ---------------------------- | -------------------------- |
| [⌘]+[/]     | 行コメント記号をトグル       | 複数行を選択中はその行数分 |
| [⇧]+[⌥]+[A] | ブロックコメント記号をトグル | 選択中は選択部分           |

### ファイル/フォルダ自体の表示

| キー        | 動作                                           | 備考                                         |
| ----------- | ---------------------------------------------- | -------------------------------------------- |
| [^]+[Tab]   | 開いているエディターの切り替え表示                     | 開いた後は^を押下したままTabで切り替えられる |
| [⌘]+[K],[O] | 現在アクティブなファイルを新規ウィンドウで開く |                                              |
| [⌘]+[K],[U] | 未編集のファイルを閉じる |


### ファイル/フォルダの編集

| キー        | 動作                                   | 備考 |
| ----------- | -------------------------------------- | ---- |
| [⌘]+[N]     | 新規ファイル作成                       |      |
| [⌘]+[K],[P] | 現在アクティブなファイルのパスをコピー |      |

### 検索/置換(シンボルに関しては後述)

| キー        | 動作                                       | 備考                                                       |
| ----------- | ------------------------------------------ | ---------------------------------------------------------- |
| [⌘]+[P]     | ファイルを検索して開く                     | '>'でgitなどのコマンド操作、'@'でシンボル検索が可能        |
| [⌘]+[F]     | 検索ポップアップ表示                       | カーソル位置のワードがマッチされていればその単語を使用する |
| [⌘]+[⇧]+[F] | 全ファイルにまたがってキーワード検索をする |                                                            |
| [⌘]+[H]     | 置換ポップアップ表示                       | 同上                                                       |
| [F3]        | 次を検索                                   | マッチワードがあればその単語で検索                         |
| [⇧]+[F3]    | 前を検索                                   | 同上                                                       |

### ウィンドウ操作

| キー        | 動作                       | 備考               |
| ----------- | -------------------------- | ------------------ |
| [⌘]+[⇧]+[N] | 新しいVS Codeを起動        |                    |
| [⌘]+[⇧]+[P] | コマンドパレットを開く     |                    |
| [F1]        | コマンドパレットを開く     | こっちの方が楽かも |
| [⌘]+[⇧]+[D] | デバッグ画面の表示         |                    |
| [⌘]+[⇧]+[E] | エクスプローラー画面の表示 |                    |
| [⌘]+[⇧]+[F] | 検索画面の表示             |                    |
| [^]+[⇧]+[G] | Git画面の表示              |                    |
| [⌘]+[,]     | Preference画面の表示       |                    |

### エディタ表示操作

| キー         | 動作                                 | 備考                                                     |
| ------------ | ------------------------------------ | -------------------------------------------------------- |
| [⌘]+[W]      | 現在の開いているエディタタブを閉じる |                                                          |
| [⌘]+[1]      | LEFTエディタにフォーカス移動         |                                                          |
| [⌘]+[2 or 3] | RIGHTエディタにフォーカス移動        | なければ同じファイルで新たに右にエディタウィンドウ作成。 |
| [⌘]+[B]      | サイドパネルの表示切り替え           |                                                          |

### エディタ移動操作

| キー            | 動作                       | 備考                        |
| --------------- | -------------------------- | --------------------------- |
| [⌘]+[⇧]+[Right] | 右タブに移動               | 左もRightをLeftにすれば同様 |
| [^]+[G]         | 指定した行番号に移動       |                             |
| [^]+[-]         | 前に表示していた箇所に戻る |                             |
| [^]+[⇧]+[-]     | 次の箇所に進む             |                             |

### コンソール切り替え

| キー        | 動作                     | 備考 |
| ----------- | ------------------------ | ---- |
| [⌘]+[⇧]+[M] | 警告やエラーのリスト表示 |      |
| [⌘]+[⇧]+[U] | アウトプット画面の表示   |      |

### エラー表示時移動

| キー     | 動作                   | 備考 |
| -------- | ---------------------- | ---- |
| [F8]     | 次のエラーと警告に移動 |      |
| [⇧]+[F8] | 前のエラーと警告に移動 |      |

### Git操作

| キー             | 動作                 | 備考                 |
| ---------------- | -------------------- | -------------------- |
| *[⌥]+[^]+[A]*    | *全ての変更をstaged* | *独自ショートカット* |
| *[⌥]+[^]+[Up]*   | *Push*               | *独自ショートカット* |
| *[⌥]+[^]+[Down]* | *Pull*               | *独自ショートカット* |

### Merge操作

| キー             | 動作                               | 備考                                                                  |
| ---------------- | ---------------------------------- | --------------------------------------------------------------------- |
| *[⌥]+[M],[1]*    | *ローカルの変更を優先する*         | *[Better Merge](https://github.com/pprice/vscode-better-merge)の機能* |
| *[⌥]+[M],[2]*    | *リモートの変更を優先する*         | *[Better Merge](https://github.com/pprice/vscode-better-merge)の機能* |
| *[⌥]+[M],[3]*    | *両方の変更を入れる*               | *[Better Merge](https://github.com/pprice/vscode-better-merge)の機能* |
| *[⌥]+[M],[↩︎]*   | *カーソルがある範囲の変更を入れる* | *[Better Merge](https://github.com/pprice/vscode-better-merge)の機能* |
| *[⌥]+[M],[Down]* | *次の競合部分に移動する*           | *[Better Merge](https://github.com/pprice/vscode-better-merge)の機能* |

## コーディング時の操作

### シンボル検索/表示

| キー           | 動作                                           | 備考                               |
| -------------- | ---------------------------------------------- | ---------------------------------- |
| [⌘]+[クリック] | シンボルの定義を表示                           | シンボルは変数名、メソッド名のこと |
| [F12]          | シンボルの定義を表示                           | 基本はこっちの方が使い勝手が良い   |
| [⌘]+[T]        | 全ファイルにまたがって参照検索しファイルを開く |                                    |
| [F2]           | シンボルのリネーム                             |                                    |
| [⇧]+[F12]      | シンボル参照箇所のインライン表示               | [esc]で消せる                      |
| [⌥]+[F12]      | シンボル定義箇所のインライン表示               | [esc]で消せる                      |

### デバッグ操作

| キー      | 動作                               | 備考 |
| --------- | ---------------------------------- | ---- |
| [F9]      | ブレークポイントの切り替え         |      |
| [F5]      | デバッグスタート又はコンティニュー |      |
| [⇧]+[F5]  | ストップ                           |      |
| [F6]      | ポーズ                             |      |
| [F10]     | ステップオーバー                   |      |
| [F11]     | ステップイン                       |      |
| [⇧]+[F11] | ステップアウト                     |      |

## MarkDown操作

### テーブルの編集

| キー           | 動作                               | 備考                                                                                                           |
| -------------- | ---------------------------------- | -------------------------------------------------------------------------------------------------------------- |
| *[⌥]+[⇧]+[f]* | *テーブルのフォーマットを整形する* | *[Table Formatter](https://marketplace.visualstudio.com/items?itemName=shuworks.vscode-table-formatter)の機能* |

### 文字編集

| キー            | 動作                                 | 備考                                                                                                          |
| --------------- | ------------------------------------ | ------------------------------------------------------------------------------------------------------------- |
| *[⌘]+[B]*       | *文字を太字にする*                   | *[Markdown All in One](https://marketplace.visualstudio.com/items?itemName=yzhang.markdown-all-in-one)の機能* |
| *[⌘]+[I]*       | *文字を斜体にする*                   | *[Markdown All in One](https://marketplace.visualstudio.com/items?itemName=yzhang.markdown-all-in-one)の機能* |
| *[⌘]+[⌥]+[@]*   | *選択範囲をコードとして表示する*     | *[Markdown All in One](https://marketplace.visualstudio.com/items?itemName=yzhang.markdown-all-in-one)の機能* |
| *[⌘]+[⌥]+['[']* | *ヘッダーを一つ上の設定に切り替える* | *[Markdown All in One](https://marketplace.visualstudio.com/items?itemName=yzhang.markdown-all-in-one)の機能* |
| *[⌘]+[⌥]+[']']* | *ヘッダーを一つ下の設定に切り替える* | *[Markdown All in One](https://marketplace.visualstudio.com/items?itemName=yzhang.markdown-all-in-one)の機能* |

## Vim操作

### モード切り替え

| キー  | 動作                 | 備考             |
| ----- | -------------------- | ---------------- |
| [i]   | 挿入モード           | カーソル位置から |
| [a]   | 挿入モード           | カーソルの後から |
| [:]   | コマンドラインモード |                  |
| [v]   | ビジュアルモード     |                  |
| [esc] | ノーマルモード       |                  |

### ファイル操作

| キー    | 動作                                         | 備考                                     |
| ------- | -------------------------------------------- | ---------------------------------------- |
| [:]+[e] | 開いてるファイルで右にエディタウィンドウ作成 |                                          |
| [:]+[q] | 開いているファイルを閉じる                   | エディタウィンドウが複数なら右から順番に |

### エディタ操作(ノーマルモード)

| キー    | 動作                                 | 備考                                             |
| ------- | ------------------------------------ | ------------------------------------------------ |
| [dd]    | カーソルがある行を切り取り           | [dd]の前に数値を入れて切り取る行数の指定が可能   |
| [yy]    | カーソルがある行のコピー             | [yy]の前に数値を入れてコピーする行数の指定が可能 |
| [P]     | カーソルがある行にペースト           |                                                  |
| [p]     | カーソルの下の行にペースト           |                                                  |
| [u]     | Undo                                 |                                                  |
| [^]+[r] | Redo                                 |                                                  |
| [U]     | 行に対して行った変更の全てを取り消す |                                                  |
| [v]     | 選択開始                             |                                                  |
| [V]     | 行選択                               |                                                  |
| [^]+[v] | 矩形選択                             |                                                  |
| [gv]    | 直前の選択範囲を再選択               |                                                  |

### 検索/置換(ノーマルモード)

| キー                   | 動作                               | 備考                           |
| ---------------------- | ---------------------------------- | ------------------------------ |
| [/]+[文字列]           | 前方検索                           |                                |
| [?]+[文字列]           | 後方検索                           |                                |
| [#]                    | カーソル位置の単語を前方検索       |                                |
| [*]                    | カーソル位置の単語を後方検索       |                                |
| [n]                    | 次の候補                           |                                |
| [N]                    | 前の候補                           |                                |
| [gd]                   | カーソル位置のローカル宣言を検索   |                                |
| [gD]                   | カーソル位置のグローバル宣言を検索 |                                |
| [:]+[%s/from/to/g]     | ページ全体で置換                   | fromが検索語句,toが置換語句    |
| [:]+[32,50s/from/to/g] | 32〜50行目まで置換                 | gは繰り返し、cなら一回毎に確認 |

### テキスト操作(ノーマルモード)

| キー    | 動作                                           | 備考                |
| ------- | ---------------------------------------------- | ------------------- |
| [x]     | 1文字削除                                      | Deleteキーと同じ    |
| [X]     | 1文字削除                                      | BSキーと同じ        |
| [D]     | カーソル位置から行末まで削除                   |                     |
| [s]     | 1文字削除して挿入モードへ切り替え              |                     |
| [S]     | 現在の行を削除して挿入モードへ切り替え         |                     |
| [r]     | カーソル位置の一文字だけ置換                   |                     |
| [R]     | 置換モードに切り替え                           |                     |
| [J]     | 現在の行と下の行をスペースありで連結           |                     |
| [gJ]    | 現在の行と下の行をスペースなしで連結           |                     |
|         | [~]                                            | 大文字/小文字に変換 |
| [^]+[a] | カーソル位置の数字をインクリメント             |                     |
| [^]+[x] | カーソル位置の数字をデクリメント               |                     |
| [^]+[p] | （挿入モード時）単語を後方向に検索し、補完する |                     |
| [^]+[n] | （挿入モード時）単語を前方向に検索し、補完する |                     |

### インデント操作(ノーマルモード)

| キー       | 動作                                 | 備考 |
| ---------- | ------------------------------------ | ---- |
| [==]       | 現在行のインデント                   |      |
| [=]+[数値] | 指定範囲のインデント                 |      |
| [=]+[G]    | 現在の行から最終行までインデントする |      |
| [>]        | 現在の行をインデント                 |      |
| [<]        | 現在の行を逆インデント               |      |

### 画面分割(ノーマルモード)

| キー            | 動作                             | 備考 |
| --------------- | -------------------------------- | ---- |
| [:]+[sp]or[vsp] | エディタウィンドウ作成           |      |
| [:]+[q]         | エディタウィンドウを閉じる       |      |
| [:]+[qall]      | 全てのエディタウィンドウを閉じる |      |
| [^]+[ww]        | エディタウィンドウを右に移動     |      |
| [^]+[hjkl]      | VS code内のウィンドウを移動      |      |

### 移動操作(ノーマルモード)

| キー              | 動作                                   | 備考                          |
| ----------------- | -------------------------------------- | ----------------------------- |
| [gg]              | 最初の行へ                             |                               |
| [G]               | 最後の行へ                             |                               |
| [数値]+[G]        | 指定した行へ                           |                               |
| [0]               | 行の最初へ                             | インデント無視                |
| [^(Ctrlではない)] | 現在の行の最初へ                       | テキストの最初                |
| [$]               | 行の末尾へ                             |                               |
| [-]               | 前の行の最初へ                         |                               |
| [+]               | 次の行の最初へ                         |                               |
| [%]               | カーソル位置にある括弧に対応する括弧へ |                               |
| [H]               | エディタの上端へ移動                   | Hの前に数値で上から数えた行へ |
| [M]               | エディタの中央行へ移動                 |                               |
| [L]               | エディタの下端へ移動                   | Lの前に数値で上から数えた行へ |
| [gm]              | エディタ中央へ移動                     | 行中の横移動                  |
| [^]+[o]           | 前回のジャンプ位置へ戻る               |                               |
| [^]+[i]           | 次回のジャンプ位置へ戻る               |                               |
| [z]+[↩︎]          | 現在の行の最初へ                       | テキストの最初                |
| [w]               | 次の単語に移動                         |                               |
| [b]               | 前の単語に移動                         |                               |
| [e]               | 単語の末尾に移動                       |                               |
| [W]               | 次の単語に移動                         | 記号は無視                    |
| [B]               | 前の単語に移動                         | 記号は無視                    |
| [E]               | 単語の末尾に移動                       | 記号は無視                    |
| [f]+[一文字]      | カーソルを指定した文字まで移動         | 3fiで3つ目のiまで移動         |
| [t]+[一文字]      | カーソルを指定した文字の左端まで移動   | 3tiで3つ目のiの左側まで移動   |

### スクロール操作(ノーマルモード)
| キー    | 動作              | 備考                                   |
| ------- | ----------------- | -------------------------------------- |
| [^]+[b] | 1画面上に移動     |                                        |
| [^]+[u] | 半画面上に移動    |                                        |
| [^]+[y] | 1行上に移動       |                                        |
| [^]+[f] | 1画面下に移動     |                                        |
| [^]+[d] | 半画面下に移動    |                                        |
| [^]+[e] | 1行下に移動       |                                        |
| [z]+[l] | n文字ずつ右に移動 | コードの折り返し設定してたらいらなそう |
| [z]+[L] | 半画面右に移動    | コードの折り返し設定してたらいらなそう |
| [z]+[h] | n文字ずつ左に移動 | コードの折り返し設定してたらいらなそう |
| [z]+[H] | 半画面左に移動    | コードの折り返し設定してたらいらなそう |

## 参考サイト

- [知ると便利なVsCodeのMarkdown記述で使うキーボードショートカット](https://officeyuai.net/%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E9%96%8B%E7%99%BA/vscode/vscodemarkdownshortcutkey/)
- [Visual Studio Code チートシート](http://qiita.com/aoinu/items/681f932ce0b162cd9520)
- [【Mac版】 VisualStudioCode キーボードショートカット](http://qiita.com/naru0504/items/99495c4482cd158ddca8)
- [Vim 基本操作まとめ](http://archiva.jp/web/tool/vim_basic.html)