[Resharperチュートリアル.テンプレート]Live Template/Surround Template(コードスニペット)の使い方/作り方

# LiveTemplate / SurroundTemplateとは
要するにコードスニペット。標準のVisual Studioでforと打ってTab押したらfor文の雛型が生成されるやつ。

=>公式情報：[ライブテンプレートを使用したソースコードの作成](https://pleiades.io/help/resharper/Templates__Applying_Templates__Creating_Source_Code_Using_Live_Templates.html)

サラウンドテンプレートは選択範囲をtry-catchブロックで囲ったり、lockで囲ったりする場合に使用。

Visual Studioでカスタムのコードスニペットを作るのはxmlファイルいじったりしてめんどくさいけど、Resharperなら簡単に作れる。

## 使い方

- liveTemplateの使用例：自作のテストメソッド作成用テンプレート。"tm"と打ってEnter→テストしたいメソッドを入力。
![liveTemplate.gif](https://qiita-image-store.s3.amazonaws.com/0/350409/5a5a2a93-30c2-b401-282e-36a74641741a.gif)

 - このように簡単に雛型を作れることがきちんとテストを書くモチベーションにもなる！

- surroundTemplateの例：try-catchの例

 - ショートカット無し
  - try-catchで囲みたいブロックを選択→ブラシマークをクリック→[Surround With]→tryをクリック

 ![surroundTemplate.gif](https://qiita-image-store.s3.amazonaws.com/0/350409/de5089fd-02b8-8231-dc98-5483b74811e2.gif)

 - try-catchはよく書くのでショートカットを覚えると生産的
  - [Ctrl + W]を数回押してメソッド全体選択→[Ctrl + E, Ctrl + U]でサラウンドテンプレートメニューを開く→[8]でtry-catchを選択
  ![surroundTemplate2.gif](https://qiita-image-store.s3.amazonaws.com/0/350409/b7e92e87-3293-8756-c867-69a8178607cc.gif)

## 作り方

### Live Templates

自分がよく使うテストメソッド生成テンプレートの作り方

1. [Resharperメニュー]→[Tools]→[Templates Explorer...]を選択

![liveTemplate1.JPG](https://qiita-image-store.s3.amazonaws.com/0/350409/7761ff4e-8a92-a22a-7558-d38ecd33a4ec.jpeg)

2. Templates Explorerが開く→[Live Templates]タブの[C#]が選択されている状態で新規作成ボタンを押す
![liveTemplate2.JPG](https://qiita-image-store.s3.amazonaws.com/0/350409/553a5f72-af18-328b-b7c2-a4ae57df53e1.jpeg)

3.下図のように編集して[Ctrl + s]で保存

- Shortcut : スニペットのショートカット
- Description : スニペット洗濯時の説明文
- 可変部分はドルマークで囲み、変数とする
![liveTemplate3.JPG](https://qiita-image-store.s3.amazonaws.com/0/350409/18e84dca-2464-7691-0cf2-2e5fc01b699b.jpeg)

→これで冒頭のGifのように"tm"と打つとコード補完でテストメソッド用のスニペットが選択できるようになる。

なお既存コードからテンプレートの雛型を作成することもできる。

1.テンプレート化したい範囲を選択
![lt1.JPG](https://qiita-image-store.s3.amazonaws.com/0/350409/d95a5a94-8c32-cd88-b707-aa697a226c0b.jpeg)

2.[Resharper]メニュー→[Tools]→[Create Live Templates from Selection...]を選択
![lt2.JPG](https://qiita-image-store.s3.amazonaws.com/0/350409/2b1a13d3-6924-4d80-148c-066bc648d7c2.jpeg)

3.雛型ができる
![lt3.JPG](https://qiita-image-store.s3.amazonaws.com/0/350409/fbecd693-ae18-8701-352d-cd9953bbf2b6.jpeg)

4.雛型を編集。shortcut, Descriptionを入力し、変数化したい部分をドルマークで囲む。
この例ではクラス名にマクロ[Containing type member name]にして、クラス名が自動で入るようにしている。
![lt4.JPG](https://qiita-image-store.s3.amazonaws.com/0/350409/a9e336b9-8659-8c87-b1ce-fda4b292466e.jpeg)

↓作成したテンプレートはこのように、使える
![liveTemplate2.gif](https://qiita-image-store.s3.amazonaws.com/0/350409/99e4048b-80c6-8175-e684-3dc6a423e8a6.gif)

### Surround Templatesの作り方
ほぼLiveTemplatesと同様。今回は[[C#Tips.ログ]Disposable-usingを使った簡単計測ログ出力方法](https://qiita.com/naitnak/items/2e7fdf4dd0809500f8ff)で紹介した計測ログ出力関数用usingのテンプレートを作成してみる

1. [Resharperメニュー]→[Tools]→[Templates Explorer...]を選択

![liveTemplate1.JPG](https://qiita-image-store.s3.amazonaws.com/0/350409/7761ff4e-8a92-a22a-7558-d38ecd33a4ec.jpeg)

2. Templates Explorerが開く→[Surround Templates]タブを選択、[C#]が選択されている状態で新規作成ボタンを押す
![surroundTemplate1.JPG](https://qiita-image-store.s3.amazonaws.com/0/350409/17d5ece6-85a2-f51d-6489-633dc6a85641.jpeg)

3.デフォルトの\$SELECTION$変数が選択範囲になるものとして編集して[Ctrl + s]で保存
![surroundTemplate2.JPG](https://qiita-image-store.s3.amazonaws.com/0/350409/149dd31d-ed01-3e14-ac51-22357fc1ae79.jpeg)

↓このように使える。

![surroundTemplate3.gif](https://qiita-image-store.s3.amazonaws.com/0/350409/b8bcc27d-a452-e684-de0b-faff33a25e31.gif)

#まとめ
これ知っとくと楽やで^^。ほんの些細な定型句でもチマチマテンプレート化していくと、退屈な単純作業が楽しいテンプレート遊びと化す！

それでは良いプログラミングライフをﾉｼ