VSCodeおすすめ設定大公開！！おすすめ拡張機能も

## はじめに

皆さんVisual Studio Code(以下VSCode)使ってますか？
私はメインで使っているのですが、自分なりにしっくりくる設定や拡張機能がある程度揃ってきたので公開しちゃいます。
おすすめ設定だけではなく、おすすめの機能もできる限り紹介したいと思いますので、最後までぜひお付き合いください。
※プログラミング言語固有の設定の解説は軽めですのでご了承ください。

**GIF画像が小さい場合は、クリックして頂けると拡大して表示が可能です**

## デフォルト機能編

### Local History機能

Gitは非常に便利なので、皆さん使われていると思います。
Gitはコミット単位で履歴が管理できますが、保存単位で履歴が見れると嬉しいな、保存単位で復元できると嬉しいな、と思うことはないでしょうか。
私はVSCodeは自動保存をオフにして、手動で保存するので、保存単位で履歴が見れると嬉しいなと思うことがたまにあります。

![913058C0-6123-4C9C-B97B-C28329CABF73.GIF](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192873/35f3c950-2d86-4c93-dd07-753ba5b79e71.gif)


上記のGIF画像を見て頂くとイメージがつかみやすいと思います。
タイムラインの部分にファイルごとの変更履歴が表示されており、選択すると現在のファイルとの差分が表示されます。
「前との比較」をクリックすると、直前の保存時との変更履歴を確認することができます。
また、行の追加だけではなく、削除の履歴も残るので、追加したり削除したりを繰り返すような場合、以前削除した行何だったかな、というときにも確認できるので便利ですね。

### ターミナル複数表示

VSCodeはターミナルが統合されているので非常に便利なのですが、複数のターミナルを開きたいなーと思うことも多いです。
もちろん、複数のターミナルを開くことができます。

![A9062662-59FD-450D-A901-27564AD4E76D.GIF](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192873/b95e16af-bb42-882b-c538-eee8c0aefb4d.gif)

あまり頻度はないかもしれませんが、全画面をターミナルで埋めることもできます。

![Snag_2214eaac.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192873/47c15b49-6c7a-cb4a-f93b-56b89a8a915f.png)

私はターミナルは大体2個使うことが多いので、下側にターミナルを2つ表示するので十分満足しています。

### setting.jsonデフォルト設定

VSCodeの設定はsettings.jsonというファイルで管理できます。
setting.jsonの開き方については省略しますが、私の個人的におすすめな設定を記載します。

```settings.json
{
    "editor.minimap.enabled": false, // ミニマップを非表示にする
    "editor.renderControlCharacters": true, // 制御文字を表示する
    "editor.suggestSelection": "first", // サジェスト一覧の初期表示項目設定
    "breadcrumbs.enabled": true, // ファイルのパンくずリストを表示する
    "files.insertFinalNewline": true, // ファイルの末尾を改行で終わらせる
    "editor.fontFamily": "'Fira Code', Hasklig, Consolas, 'Courier New', monospace",
    "editor.fontLigatures": true, // 合字を有効化
    "editor.fontSize": 17, // フォントサイズを変更
    "editor.renderLineHighlight": "all", // 選択行の行番号をハイライトする
    "editor.cursorBlinking": "smooth", // カーソルが滑らかに点滅するように
    "editor.cursorSmoothCaretAnimation": true, // カーソルの点滅をアニメーション表示する
    "editor.cursorStyle": "block", // カーソルの外観をブロックに変更
    "files.autoGuessEncoding": true, // ファイルの自動エンコードを実施
    "window.zoomLevel": 0, // 画面全体の表示サイズはデフォルト
    "editor.bracketPairColorization.enabled": true // 括弧の対応を色付ける
}
```

上記にコメントを入れているので内容は大まかには理解頂けるかと思いますが、何点か補足します。

**制御文字を表示(editor.renderControlCharacters)**
少し前に以下の記事が話題になりました。
[StackOverflowからのコピペをやめろ。今すぐにだ。](https://qiita.com/rana_kualu/items/3b03961deb003a8a2f1d)
簡単に言うと制御文字が含まれる可能性があるので、安易にコピーペーストすると危険ですよ、ということです。
VSCodeの設定で制御文字の表示を有効化している場合としていない場合の違いは以下になります。

制御文字の表示が有効化されていない場合
![Snag_22415ecd.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192873/19fe84b3-a102-aeee-6638-d6501c4099ee.png)

制御文字の表示が有効化されている場合
![Snag_224197a0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192873/c9c758fd-a648-c2b5-ddb6-dee9d3f778ec.png)

有効化していると明らかに変な文字が表示されているのでわかりやすくなりますよね。

**合字を有効化(editor.fontLigatures)**
合字ってなんだ？と思われるかもしれません。
フォントは好みが分かれるところだと思いますが、個人的には気に入っているので有効化しています。

プログラミングにおいて比較演算子(!=)やアロー演算子(=>)などはよく使うかと思いますが、2文字使うので、理解するために2文字をパースする必要があります。
それを1文字で見える形で表示すれば、理解が早くなるんじゃないか、ということのようです。
実際の表示は以下のようになるのですが、もし気に入った人がいれば有効化してもいいと思います。
ただ、比較演算子(==)は逆にわかりにくくなる可能性もあるので注意ください。
![Snag_22481d8c.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192873/304d5fd5-151b-d3af-622c-6e75c2efda4f.png)

**カーソルのカスタマイズ**
私は目が悪くて細かい字が見えないので、フォントサイズの変更もしていますが、カーソルの変更もしています。
設定変更すると以下のような感じのカーソルになるので、少し見やすくなります。
![4E99D811-8BA0-491A-AC45-8FFB3105ABA7.GIF](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192873/3d528d5c-a93a-b04e-8bcb-e50d61606699.gif)

## 拡張機能編

皆さんお待ちかねの拡張機能の紹介です。
では、行ってみましょうー。

### Auto Close Tag, Auto Rename Tag

* [Auto Close Tag](https://marketplace.visualstudio.com/items?itemName=formulahendry.auto-close-tag)
* [Auto Rename Tag](https://marketplace.visualstudio.com/items?itemName=formulahendry.auto-rename-tag)

こちらはHTMLをコードを書くときに便利な拡張機能です。
実際に拡張機能ありでHTMLを書くと以下のようになります。

![782AC7C4-C830-450F-B4FD-43EDC904ECA6.GIF](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192873/f20c28b2-6ae7-3fc1-e0e9-1c6e79ed937a.gif)

### autoDocstring - Python Docstring Generator

* [autoDocstring - Python Docstring Generator](https://marketplace.visualstudio.com/items?itemName=njpwerner.autodocstring)

Python結構書くんですが、Docstringのフォーマットは合わせたいですよね。
そんな時に便利なのが、この拡張機能です。

![8ABED7E9-444C-4916-A411-F3FE490F0A45.GIF](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192873/8c5846c9-c6ae-0307-eaad-dc7482474568.gif)

### Code Spell Checker

* [Code Spell Checker](https://marketplace.visualstudio.com/items?itemName=streetsidesoftware.code-spell-checker)

私も何気なく変数名を英語で記載しているかと思いますが、スペルが間違っていることも多くあります。
後から気付いて変更したいけど、デプロイされているから変更しにくいなー、という経験はだれしもあるのではないでしょうか。
そんな時にこの拡張機能を入れると、スペルミスを指摘してくれます。

以下はvalueと書きたかったのが、valuになっているので指摘されている例です。
![Snag_631328.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192873/7a9d94e4-d470-1b7c-a523-dec6bcec8b75.png)

ちなみに、この拡張機能除外する単語も設定できるので、プロジェクト固有の単語などは除外することで、指摘されなくなります。
この辺も便利でいいですね。

### Draw.io Integration

* [Draw.io Integration](https://marketplace.visualstudio.com/items?itemName=hediet.vscode-drawio)

プロジェクトのDocディレクトリなどにMarkdownのファイルとDraw.ioのファイルがあることもあるかもしれません。
簡単な図などはDraw.ioで作ると簡単にきれいに作れるので便利ですよね。
詳細は公式のGIF画像がわかりやすいのでそちらを参照ください。


### EditorConfig for VS Code

* [EditorConfig for VS Code](https://marketplace.visualstudio.com/items?itemName=EditorConfig.EditorConfig)

インデントサイズどうするのか、などはプロジェクトごとに決まっているかと思います。
例えば、Pythonのインデントを2にするのか4にするのか、などですね。

以下のファイルをプロジェクト直下に置いておくと、自動的にVSCodeの設定に反映されます。

```.editorconfig
root = true

[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true

[*.md]
trim_trailing_whitespace = false

[*.json]
indent_size = 4

[*.py]
indent_size = 4
```

インデントは以下の部分で確認が可能です。
![Snag_2ed90a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192873/2a831016-bab0-0646-2ad4-0c3e7ac8e86a.png)


### Error Lens

* [Error Lens](https://marketplace.visualstudio.com/items?itemName=usernamehw.errorlens)

リンターなどを設定されている方も多いかと思います。
警告だったりエラーをもう少しわかりやすく表示したい、と思ったことはありませんか？
拡張機能を入れると以下のようにエディター内に警告やエラーが表示されるので、コードを書いているときにエラーに気づくことができるので便利です。
![Snag_322324.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192873/fb28c8ca-e3c8-4fcc-e008-8afc83647eb8.png)

### ESLint

* [ESLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint)

JS系の開発をする人はとりあえず入れてください。
プロジェクト固有の設定などいろいろありますが、本記事では解説を省略します。

### Excel Viewer

* [Excel Viewer](https://marketplace.visualstudio.com/items?itemName=GrapeCity.gc-excelviewer)

たまーにCSVファイルをVSCodeで開くことがあるのですが、もう少しきれいに表示してほしいな、と思うことはありませんか？
実はVSCodeでもCSVをきれいに表示することができます。

![FA2D9D10-68E3-4755-8167-B509EAC11915.GIF](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192873/dcd5314f-6e70-b47a-25e7-731a8c14d43f.gif)

### Git History

* [Git History](https://marketplace.visualstudio.com/items?itemName=donjayamanne.githistory)

こちらはGit関係の拡張機能です。
ファイルごとの差分を確認したいときに便利です。
あるファイルがどのタイミングでどんな修正が入ったのか、を確認するときに主に使います。
以下のGIF画像を見てもらえるとイメージが付くかと思いますが、あるファイルの変更が含まれるコミットの一覧から一つコミットを選んで修正を確認することも、その時点と現在の差分を確認することもできます。

![B9BFFC58-CED3-41C7-B60C-9F2696130600.GIF](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192873/5995ec57-bd31-c59e-33e6-547e86516d36.gif)

### GitLens — Git supercharged

* [GitLens — Git supercharged](https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens)

こちらもGit関係の拡張機能です。
あるファイルのこの行って誰が編集したんだっけ、だれに聞けばいいんだっけ？ということはないでしょうか。
私は結構ありました。
そんな時に以下のようにするとその行の最終の変更履歴を見ることができます。
(私しかコミットしてないので一人しか表示されてませんが、、、、)

![8BC9140C-B9AE-4F9C-B867-F2747C1FFDC4.GIF](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192873/762281ba-f5a0-4b2b-d4af-3279c4066c34.gif)


### indent-rainbow

* [indent-rainbow](https://marketplace.visualstudio.com/items?itemName=oderwat.indent-rainbow)

Pythonなどはインデントが結構重要だったりするので、インデントが見やすいと嬉しいですよね。
以下の画像のようにインデントがカラフルに色分けされるので、見やすくて重宝しています。

![Snag_3b37ba.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192873/9654031b-b5fe-a5cb-1ea6-3766965edd47.png)

### Markdown All in One

* [Markdown All in One](https://marketplace.visualstudio.com/items?itemName=yzhang.markdown-all-in-one)

Markdownをデフォルト機能で書くと、リストのエンターを押したときに自動的に次のリスト追加されてほしいな、タブキーでインデントしてほしいな、って思いませんか？
そういった細かいところに手が届くのがこの拡張機能です。
公式の解説がGIF付きで分かりやすいのでぜひ見て下さい。

### Markdown Preview Enhanced

* [Markdown Preview Enhanced](https://marketplace.visualstudio.com/items?itemName=shd101wyy.markdown-preview-enhanced)

Markdownのデフォルトのプレビューは個人的にはあまり見やすいとは思ってません。
上記の拡張機能を入れることで、よりプレビューが見やすくなります。

デフォルトのプレビュー
![Snag_46392c.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192873/863e2cdd-70e9-4379-5578-765ab084256e.png)

拡張機能ありのプレビュー
![Snag_46a236.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192873/840e15d8-4087-c900-cd58-2bcd3c80ea2b.png)

ちなみに、PDFなどの変換も可能です。
![Snag_46ec20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192873/f4ec8829-278e-6ce6-4230-0cd228e85e69.png)

### Path Intellisense

* [Path Intellisense](https://marketplace.visualstudio.com/items?itemName=christian-kohler.path-intellisense)

JS系のインポートは相対パスのことが多いので、インポートするときにファイルパスを指定することが多くあるかと思います。
そういった場合に、ファイルパスへの補完が効くと嬉しいと思いませんか？
役に立つ場面は多いと思いますので、必須の拡張機能だと思ってます。

### Prettier - Code formatter

* [Prettier - Code formatter](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode)

有名なコードフォーマットツールですね。
速度面で遅いという話もありますが、なんだかんだ便利なので使ってます。

### Project Manager

* [Project Manager](https://marketplace.visualstudio.com/items?itemName=alefragnani.project-manager)

VSCodeで複数のプロジェクトを開くことは多いと思います。
そんな時に、複数のプロジェクトを簡単に開けたらな、と思うことはありませんか？
この拡張機能を使うとそれが簡単に実現できます。

![770F212B-76B8-4BBE-BAB2-1AED79500C67.GIF](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192873/94cc344a-233e-1369-5d63-ef521abcd569.gif)



### Python, Pylance

* [Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python)
* [Pylance](https://marketplace.visualstudio.com/items?itemName=ms-python.vscode-pylance)

Python書くのであればこの二つの拡張機能は入れましょう。
細かい設定の話は省略しますが、入れておいて損はないと思います。

### SonarLint

* [SonarLint](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarlint-vscode)

コードのチェックをしてくれる拡張機能です。
SonarLintでは比較的簡易的なチェックしかしてくれませんが、ある程度は使えます。

![83E45D35-6999-4832-BE1E-569F29D38FEB.GIF](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192873/eb3a7e58-b2da-515b-523a-4e9b815a3b58.gif)

SonarLintはSonarQubeの簡易版のような位置づけで、より多くのルールで検証したい場合は、SonarQubeの利用をお勧めします。
複数の言語に対応しており、バグやセキュリティ、コードの不吉なにおいなどを指摘してくれます。
[Python static code analysis](https://rules.sonarsource.com/python/RSPEC-4721)

インストール方法などは省略しますが、先ほどのコードを検査した結果は以下のようになります。
SonarLintで検出された結果以外にも、「パスワードを含んでそうなので危険ですよ！」というエラーも検知できていますね。
そのほかにもいろいろなルールがあり、よりコードの品質を高めるために、一度実行してもよいと思います。

![AE50CD62-FA51-4692-BF4C-0E443DAB11C2.GIF](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192873/f308638f-95c2-48a6-35c0-5c416eba64de.gif)


### TODO Highlight

* [TODO Highlight](https://marketplace.visualstudio.com/items?itemName=wayou.vscode-todo-highlight)

TODOコメントをハイライト表示する拡張機能ですね。
入れると以下のようにハイライトされます。

![Snag_50b90a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192873/9e66540f-55eb-b36f-7a20-c4815aa9eb73.png)

### Todo Tree

* [Todo Tree](https://marketplace.visualstudio.com/items?itemName=Gruntfuggly.todo-tree)

TODOコメントの一覧を表示することができる拡張機能です。
以下のような感じでプロジェクト全体のTODOコメントが一覧で見ることができます。

![Snag_5234cc.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192873/b9648093-3cc0-8562-033b-c3854acd06fb.png)

### vscode-icons

* [vscode-icons](https://marketplace.visualstudio.com/items?itemName=vscode-icons-team.vscode-icons)

ファイルのアイコンが見やすくなります。
公式のページにGIF画像があるので、そちらを見て頂くとわかりやすいかと思います。
拡張子ごとにアイコンが変わって表示されるのでとても見やすいです。
![Snag_5511e4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192873/9a420773-030d-ebca-e643-ba2a6ba8658e.png)

## 最後に

皆さんがご存じの拡張機能や設定はどのくらいあったでしょうか。
もし、おすすめの拡張機能などあればコメント欄で教えてください。
この記事がより良い開発の一助になれば幸いです。