【Visual Studio】もっと早く知りたかった作業速度を上げる小技集（随時更新）

# はじめに
Linux開発環境からWindows開発環境へ移り、最初はVisual Studioの操作に苦労した。”多機能すぎて、どこに何があるか分からない”。操作方法をネットで調べる度に、作業時間ロスがちりつも。

振り返ると以下の点を早く知っていたら、「もっと作業を速くできたのでは？」と思って記事にしてみました。

* Visual Studio内で機能を検索して、実行する方法
* ソースコードの調査/実装に役立つ便利機能/ショートカット

同じく、Visual Studioの操作に苦しんでいる方、初心者の方のヒントになれば良いなと思います。
ご指摘やアドバイスを貰えると、すごく嬉しいです。

# 目次
* 動作確認環境
* もっと早く知りたかった機能
* よく使うショートカット
* 参考

# 動作確認環境
Visual Studio2019

# もっと早く知りたかった機能

## クイック起動
Visual Studioの搭載機能の中から、目的の操作を探して・実行するための機能。
この機能で「Visual Studioが多機能すぎて、分からない」って状態から解放される。

手順
1.Visual Studioにフォーカスをあてた状態で、「`Ctrl +Q`」あるいは「`クイック起動のテキストボックス`」を選択する。
2.任意の文字列を入力すると、関連する機能が表示される。一覧から選択すると、選択した機能を実行できる。

下記はクイック起動でデバックを実行した例です。
デバックをわざわざクイック起動で実行する人はいないと思いますが、「機能の検索と実行ができること」を伝えるために身近な機能にしました。
![クイック起動_デバック.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156594/93e612d7-0f11-f56f-8926-0440be9776bd.gif)

この記事[Visual Studioの機能を呼び出すショートカット"クイック起動"の解説]
(https://qiita.com/masa/items/97c33c029c899311034b)を参考にしました。


## コードスニペット
あらかじめ用意されているコードを挿入するVisual Studioの標準機能です。
開発言語ごとに準備されているようです。

C#のコンソール出力を挿入する例
![WriteLine.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156594/b2cd37e1-740f-5659-b5f3-6b20b982d9ff.gif)

手順
1.ショートカットキーを入力する。
2.inteliSenceが候補を表示するので、Tabキーで確定すると、コード挿入される。
3.更にTabキーを押すと、自動挿入されたコード内でジャンプできる。

手順を用いて、C#のforeach文を挿入した例
![foreach-up.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156594/c1850312-d43a-0bb1-e017-3f226023cd67.gif)



### コードスニペット一覧
こちらの記事[Visual Studio C#コードスニペット早見表](https://qiita.com/Kosen-amai/items/248e44dff958be901a84)が参考になります。
より深く知りたい方はこちらの記事[C#コードスニペット](https://docs.microsoft.com/ja-jp/visualstudio/ide/visual-csharp-code-snippets?view=vs-2019)を参考にすると良いです。

# よく使うショートカット
Microsoft社の下記記事より、よく利用するものを抜粋。
[Visual Studio のショートカットに関するヒント](https://docs.microsoft.com/ja-jp/visualstudio/ide/productivity-shortcuts?view=vs-2019)
[C#開発者のためのVisual Studio 生産性ガイド](https://docs.microsoft.com/ja-jp/visualstudio/ide/csharp-developer-productivity?view=vs-2019)


## ウインドウ操作
1つのモニタで作業するときに使うショートカット。

|タスク  | ショートカット |
|:-|:-|
|ウィンドウの最大化/最小化   | `Windowsキー + ↑` / `Windowsキー + ↓`  |
|ウィンドウの移動  | `Windowsキー + ←` / `Windowsキー + →`  |

## 検索

|タスク | ショートカット | 備考 |
|:-|:-|:-|
|ソリューションエクスプローラの検索   |`Ctrl+ ;`   |ソリューリョンエクスプローラを選択した状態で実行すること。<br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156594/929068d9-743e-8101-1869-a4210c4e4591.png) |
|エディター内のクイック検索   |`Ctrl+F`   |![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156594/c47db9dd-1e4a-ef71-8e3c-068ee82bb253.png) |
|クイック検索の次の結果   |`Enter`   |クイック検索を実行後に使える   |
|クイック検索の前の結果   |`Shift + Enter`   |クイック検索を実行後に使える   |
|[フォルダーを指定して検索]   |`Ctrl+Shift+F`   |ソリューション内にソースコードが多いときに使う検索。<br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156594/aa6e00eb-092a-9440-dc91-8f222d46ea0a.png)|

## コードエディタ

| タスク | ショートカット | 備考 |
|:-|:-|:-|
|ドキュメントのフォーマット   |`Ctrl+K、Ctrl+D`   |ソースのインデントを調整したいときなどに使う。<br>Ctrl + Kを押下してから、そのままCtrl + Dを押下する。|
|[クイックアクション](https://docs.microsoft.com/ja-jp/visualstudio/ide/quick-actions?view=vs-2019)|`Ctrl+. キー`  |C#だと、`Alt + Enter`でも可能。<br>あるいは行頭に出てきた電球アイコンをクリックする。 |
|移動|`Ctrl+ ,`|複数ソースコードが存在すると現在開かれているソース以外の候補が表示される。筆者の環境はJetBrain社のResharperが入っているため、多少異なるかも。<br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156594/5abae4a9-642a-4b23-dde0-25179d061e52.png)|
|行の複製|`Ctrl+E、V`|複製したい行を選択した状態で実行すること。<br><br>C#なら、`Ctrl+D`でカーソルのあるコード行を複製できる(個人的にはこっちをよく使う)。|
|定義へ移動  |`F12` | | 
|定義をここに表示  |`Alt+F12` |表示された定義の画面を編集すると、対象ソースを含むファイルも更新される。<br> ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156594/91959a73-f170-ac18-69be-5875c5265354.png)|
|選択範囲をコメント|`Ctrl+K,Ctrl+C`|Ctrl + Kを押下してから、そのままCtrl + Cを押下する。 |
|選択範囲をコメントを解除|`Ctrl+K,Ctrl+U`|Ctrl + Kを押下してから、そのままCtrl+Uを押下する。 |
|前の問題に移動|`Alt + PgUp`|ドキュメント内の【前】のエラー、警告、提案に移動する。 |
|次の問題に移動|`Alt + PgDn`|ドキュメント内の【次】のエラー、警告、提案に移動する。 |
|矩形選択   |`Alt+Shift+カーソル`    |Altキー押しながらマウス移動でも可能。   |
|ソリューションのビルド |`Ctrl+Shift+B`| |
|編集位置を1つ前に戻る |`Ctrl + -(マイナス)`|ソースコードの調査で別の実装にジャンプして、元の編集位置が分からなくなったときに重宝する。 |
|編集位置を1つ前に進める |`Ctrl+ Shift + -(マイナス)`||

## デバック

| タスク | ショートカット | 備考 |
|:-|:-|:-|
|デバッグの開始   |`F5`   ||
|デバッグなしで開始   |`Ctrl+F5`   ||
|デバッグの停止   |`Shift+F5`   ||
|ステップ オーバー   |`F10`   ||
|ステップ イン   |`F11`   ||
|ステップ アウト   |`Shift+F11`   ||
|ブレークポイントの設定と切り替え   |`F9`  ||
|ブレークポイントの無効化   |`Ctrl+F9`||

# 蛇足
[Visual Studio 2022](https://devblogs.microsoft.com/visualstudio/visual-studio-2022/)が世に浸透すると、操作性の違いにまた苦しむんだろうなー( -_-)

# 参考
[Visual Studio のショートカットに関するヒント](https://docs.microsoft.com/ja-jp/visualstudio/ide/productivity-shortcuts?view=vs-2019)
[C#開発者のためのVisual Studio 生産性ガイド](https://docs.microsoft.com/ja-jp/visualstudio/ide/csharp-developer-productivity?view=vs-2019)
[Visual Studioの機能を呼び出すショートカット"クイック起動"の解説]
(https://qiita.com/masa/items/97c33c029c899311034b)
[クイックアクション](https://docs.microsoft.com/ja-jp/visualstudio/ide/quick-actions?view=vs-2019)
[Visual Studio 2017 のリファクタリング機能](https://www.atmarkit.co.jp/ait/articles/1708/16/news026.html)
[IntelliSenseを活用してキモチいいコーディングを実現しよう](https://www.atmarkit.co.jp/ait/articles/1706/30/news028.html)
[C#コードスニペット](https://docs.microsoft.com/ja-jp/visualstudio/ide/visual-csharp-code-snippets?view=vs-2019)
[Visual Studio C#コードスニペット早見表](https://qiita.com/Kosen-amai/items/248e44dff958be901a84)
[Visual Studio 2022](https://devblogs.microsoft.com/visualstudio/visual-studio-2022/)