【初心者向け】Reactに入門したら覚えておくと便利なVSCodeの機能をGIF付きでさくっと解説

# はじめに
この記事ではReactに入門した初心者がVSCodeに追加したら便利だったと思う機能を紹介します。自分もそうですが、便利な機能があると聞いても便利さを実感できないと中々使う気になれないと思いますので部分的にGIFをつけて解説してみました。
今後、新しい機能を覚えたら少しずつ更新するかもしれません。また何か不備等あればご指摘頂ければと思います。

### 筆者の環境
・Mac
・VSCode=1.48.0（英語）
・Node.js=12.8.1

# 目次
[・とりあえずEmmetを使う](#とりあえずemmetを使う)
[　・Emmetが使えない場合の対処方法](#emmetが使えない場合の対処方法)
[　・Emmetをjsやjsxで使う設定](#emmetをjsやjsxで使う設定)
[・React用のVSCodeエクステンション](#react用のvscodeエクステンション)
[・VSCodeのショートカットキー](#vscodeのショートカットキー)
[　・コーディング関連のショートカットキー](#コーディング関連のショートカットキー)

# とりあえずEmmetを使う
[Emmetとは](https://ja.wikipedia.org/wiki/Emmet)
>Emmetは既定形式の入力補完機能によりHTML、CSS、XML、XSL等を素早く編集できる、テキストエディタ用プラグインである。

VSCodeではHTMLとCSSに対してはデフォルトでEmmetが使えるようになっており、特に何か設定の必要はありません。Demoを見た方が早いので動作については以下をご覧ください。拡張子がhtmlのファイルを使用しています。

## Demo
![emmet_demo.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256640/7c956b81-a3fb-76e1-3377-c03e2698cf13.gif)

### `!` → `Enterキー` or `Tabキー`
DOCTYPEを含む、html,head,bodyタグのテンプレートが出力されます。!を押しただけでHTMLテンプレートが出力されるので初めて知った時は感動しました。

```demo.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
</html>
```

### `h1` → `Enterキー` or `Tabキー`
h1タグを出力。
```
<h1></h1>
```

### `.container` → `Enterキー` or `Tabキー`
```
<div class="contanier"></div>
```

.（ドット）をつけるとCSSのクラス名を指定することができます。.（ドット）で繋いでmain.contentのような書き方もできます。この他にもCSSと組み合わせたり色々な出力ができるようです。以下のサイトが詳しかったです。

[爆速コーディングを実現！Emmetの使い方とVSCodeのおすすめ設定まとめ](https://webdesign-trends.net/entry/13588)

[Emmetのチートシートはこちら](https://docs.emmet.io/cheat-sheet/)

# Emmetが使えない場合の対処方法
上記サイトにも記載されてましたが、HTMLとCSSはデフォルトでEmmetが使えるようになってるはずですが、設定の状況によって使えない場合があるようです。その場合は以下手順で設定を見直してみてください。

1) VSCode上でMac:`Command` + `,`(Win:`Ctrl` + `,`)でSettings（設定）を開くことができます。（左下の歯車ボタンからでも開けます。）
2) 入力欄に"Emmet"と入力するとEmmetに関連する項目が出てきます。
3) 以下の設定を見直してみてください。
　- Emmet: Show Abbreviation Suggestionsがオンになっている
　- Emmet: Show Expanded Abbreviationがalwaysになっている
　- Emmet: Show Suggestions As Snippetsがオンになっている
　- Emmet: Trigger Expansion On Tabがオンになっている
![Emmet_error.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256640/380835c8-47e3-5076-fa3a-02d163cf7345.jpeg)

## Emmetをjsやjsxで使う設定
Reactの開発で使う場合は当然jsやjsxのファイルの中でHTMLやCSSのEmmetが使いたくなります。デフォルトではjsやjsxファイル内でh1 → Enterキー or Tabキーを入力してもh1タグは表示されません。

まず上記と同様にSettings(設定)を開いてEmmet: Include Languagesで"Add Item"ボタンを押してItemにjavascript、Valueにjavascriptreactと入力します。

![emmet_language.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256640/f970b3eb-ad1e-0c46-9059-9086143bf92e.jpeg)
ちなみにSettingsで設定した内容はsettings.jsonでも確認/変更が可能になっています。
![emmet_json.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256640/5b1c283a-f8e1-8c69-14a6-05da0fd007c4.jpeg)
"Edit in settings.json"と記載されてる箇所をクリックするとsettings.jsonが開きます。
```settings.json
"emmet.showSuggestionsAsSnippets": true,
  "emmet.extensionsPath": "",
  "emmet.includeLanguages": {           //この行が追加されてる
    "javascript": "javascriptreact"　　　//この行が追加されてる
  },　　　　　　　　　　　　　　　　　　　　　　//この行が追加されてる
  "emmet.triggerExpansionOnTab": true,
```
これでjsやjsxの拡張子のファイルに対してもEmmetが使えるようになりました。
![emmet_jsx.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256640/f21dff48-70fb-1b83-b66e-dfcce9988d7d.gif)

# React用のVSCodeエクステンション
React用のVSCodeエクステンションはいくつかあるようですが、筆者がインストールしたのは下記のものです。2022年3月現在で500万近くダウンロードされています。
![React_Snippet.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256640/03475754-960a-754c-6d77-e31654e4491e.png)

## Demo
例として**rfc**と入力するだけでreactのjsx用のテンプレートを出力してくれます。
![react_rfc.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256640/29b065da-68ab-fcb3-9a8e-6b61e1378f11.gif)

他にもimport文など便利なショートカットが色々あります。

```
imr→	import React from 'react'
imrd→	import ReactDOM from 'react-dom'
imrc→	import React, { Component } from 'react'
```

# Prettier
コードをいい感じに整形してくれるエクステンションがPrettierです。こちらは2022年3月現在で2000万近くダウンロードされています。
![Prettier.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256640/d3289ff0-1bd6-a4f7-7e92-6d48bcccb369.png)

## Demo
この例では整形されてないHTMLのタグを書いて保存しただけです。
![Prettier_demo.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256640/2e723aa3-ea8e-2372-7559-4dc11d5a7d95.gif)

インストールしたら下記の設定をすると保存する時に勝手にコードを整形してくれます。めちゃくちゃ便利です！他にも設定すれば色々できるようです。（全然試せてませんが。。）

![onsave.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256640/d4a2baf1-389b-513b-ccfb-a2c9b6e0caac.jpeg)

# VSCodeのショートカットキー
## ターミナルからVSCodeのプロジェクトフォルダを開く
ターミナル上でgit cloneとかした後にそのままプロジェクトフォルダを開きたい時ありますよね。そんな時に便利です。

1. Mac:`Command` + `Shift` +`P`(Win:`Ctrl` + `Shift` +`P`)　でコマンドパレットを表示
2. 検索ボックスに"shell"と入力
3. Shell Command: install 'code' command in PATHを選択してインストール

![shell.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256640/cf60ce74-f95a-1233-a250-2b119611730b.png) 
一度設定すればカレントフォルダで下記を入力するだけでVSCodeに飛んでプロジェクトフォルダを開いてくれます。
```
code .
```

こちらは以下の記事を参考にさせて頂きました。
[ターミナルからVisual Studio Codeを起動する方法【公式の方法】](https://qiita.com/naru0504/items/c2ed8869ffbf7682cf5c)

## VSCode内でターミナルを開く
何故かいつも忘れてしまうやつです。
### Mac:`control` + `Shift` + `@`(Win:`Ctrl` +  `@`)
### 
## VSCodeの更新（リロード）
buildとかした後ファイルがうまく反映されなくてリロードしたい時とかありますよね。ショートカットを使うやり方とボタンを押すやり方の二通りのやり方がありますが個人的に後者の方が好みです。

### 1) Mac:`Command` + `Shift` +`P`(Win:`Ctrl` + `Shift` +`P`)　で>Reload Windowを選択
![reload.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256640/2eada7f5-d79c-f89b-9c84-874f4b0775b5.png)
### 2) リロードボタンを押す
![リロード画像.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256640/4b7e7f91-b16e-d510-38bb-8c5a93878668.jpeg)

## コーディング関連のショートカットキー

### 行末に移動
とりあえずこれだけ覚えておけばコーディングには困らないですよね。

**Mac:`Command` + `→`(Win:`Ctrl` + `→`)**
![行末に移動.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256640/4ebc1502-db72-bd04-d3df-62d1819d88bf.gif)
### 行頭に移動
**Mac:`Command` + `←`(Win:`Ctrl` + `←`)**

### 行ごと移動させる
1. 移動させたい行の全体を選択（複数行選択可）
2. **Mac:`Option` + `↓`/`↑`(Win:`Alt` + `↓`/`↑`)**
![行移動 2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256640/ad7c4a0d-3fe7-c2f5-7cf1-dc4fa03a9cca.gif)

### 単語の複数選択/変更
例えばタグの内容を変更したい時に開始タグと閉じタグそれぞれ変えるの面倒ですよね。例では2つですが、さらに同じ文字列があればMac:`Command`(Win:`Ctrl`)を押しっぱなしで`D`を押していけば選択して同時に変更することができます。

操作方法
**Mac:`Command`(Win:`Ctrl`)を押しっぱなしで`D`を複数回押して同じ単語を複数選択後に文字を入力**
![複数選択.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256640/e91f1737-8d20-01a7-9430-83e122a35711.gif)

# 終わりに
いかがだったでしょうか。
基本的にチュートリアル動画を何本も並走しながら学習しており、ここに挙げているものは複数の動画で紹介されてるような割とメジャーなものだと思いますが、これは知らなかった！というような機能やショートカットキーがあれば幸いです。
設定は早々に済ませてReact開発に集中しましょう。
最後までお読み頂き有難うございました！

# 参考
[Visual Studio Code React Setup - 5 Tips](https://www.youtube.com/watch?v=9EMUJm7qdxM)
[Full Modern React Tutorial](https://www.youtube.com/watch?v=j942wKiXFu8&list=PL4cUxeGkcC9gZD-Tvwfod2gaISzfRiP9d)