PhpStormのオススメ機能

OPENLOGIの大島です:innocent: [OPENLOGI AdventCalendar](https://qiita.com/advent-calendar/2017/openlogi)の16日目です。

## はじめに
今回は僕が愛用しているPhpStormでオススメの機能を紹介したいと思います。

[PhpStorm](https://www.jetbrains.com/phpstorm/)はjetbrains社製のPHP開発に特化したIDEです。開発をサポートしてくれる様々な機能があり、使っているうちにPhpStorm無しでは生きていけない体になってしまいました:innocent:

すでにお使いの方は１つでも新しい発見があれば嬉しいです！
他エディタをお使いの方も「こんな機能あるんだなー」程度でチラッと眺めていただければ:pray:

なお、下記に紹介するほとんどの機能・プラグインはIntelliJでも同様に使えると思います。

## 設定のカスタマイズについて
ほとんどの操作は上部メニューの`PhpStorm`→`Preference`→`Keymap`にて自由にキーバインド（ショートカット）を設定できます。押しづらいものはどんどん変えちゃいましょう。

また、キー割り当てするまでもない操作でも、下記に紹介する検索から実行できます。Editer操作やよく使うものはキーに割り当てて、たまに使うものは検索から実行がいいと思います。

また、各種プラグインは`Preference` > `Plugins` > `Browse Repositories`でインストールできます

# 検索系
これだけ覚えておけば何とかなるやつ:innocent:

## Search Everywhere
`⇧` 2回
何でも検索
ファイル、クラス、IDEの操作、設定など何でもでてきます
が、個人的には何でも出てきすぎて逆に見づらいので下記の検索機能を使い分けてます

## Find Action
IDEの操作全般を検索&実行できます。
僕は`⌥ + Space`を割り当てています
<img width="360" alt="Monosnap 2017-12-16 14-17-10.png" src="https://qiita-image-store.s3.amazonaws.com/0/180075/fc45a85b-6268-8331-b91f-d32ee9fe8ad0.png">


## Navigate→File
`⌘ + shift + O`
ファイル検索です。検索対象をきちんと入力しなくても、図のように一部をタイプすると拾ってきてくれます。
<img width="166" alt="スクリーンショット_2017_12_14_14_01.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/180075/c2f21102-c3b9-7b7d-791c-fe81c20addb1.jpeg">

最後に`/`を入れることでディレクトリも検索できます
<img width="123" alt="Skitch.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/180075/70b35758-808a-d62f-2f3e-287e3ca15a3e.jpeg">


## Find in Path
`⌘ + shift + F`
コード内の文字列検索です。正規表現での検索もできます。
また`Project`ウィンドウでディレクトリをクリックしてから検索することで、その配下のみを検索対象にできます  
   <img width="208" alt="homestead_localhost_-_stockView2_-____Develop_private_stockView2_.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/180075/f5544c78-479f-6e30-0e8e-acd364e61bad.jpeg">

# 編集系
## Markdown Navigator
[公式ページ](https://plugins.jetbrains.com/plugin/7896-markdown-navigator)
Markdown編集のためのプラグインです
プロジェクト外のメモ帳的なプラグイン[Scratch](https://plugins.jetbrains.com/plugin/4428-scratch)と組み合わせるといい感じ
料金は基本無料で、有料ライセンスを取得すると追加機能が利用できます（年$15.99）

### できること
プレビューを確認しながらmarkdownが書けます。
有料版にすると下記のようなこともできます

- コードブロックの追加機能
    - syntax highlight (これは無料版でできてほしい:pray:)
    - 各言語での補完
    - SQLコードブロック上で`⌘ + Enter`を押すとクエリ実行
        - 僕はこれに感動してお布施しました:innocent:
- カラーの細かいカスタマイズとか色々

<img width="567" alt="stockView2] 2017-12-15 09-01-39.png" src="https://qiita-image-store.s3.amazonaws.com/0/180075/6b4a6d0c-7a2d-cf26-8e25-25b6a0c46a8e.png">


## Live templete
いわゆるスニペットです
`Preference` > `Editor` > `Live Templete`から設定できます
<img width="555" alt="Preferences 2017-12-16 13-27-56.png" src="https://qiita-image-store.s3.amazonaws.com/0/180075/ea80aaa1-6ed3-bd1a-7e78-75677c1d8d66.png">

`Abbreviation` には入力する文字列を、`Templete text`には生成したい文を入力します
`$` `$`で囲むと変数として扱われ、生成後にフォーカスがあたるようになります

## Clone Caret Above / below
Editor操作ですがデフォルトでキーバインドがなかった気がしたので紹介します。
キャレットを複製して複数行編集ができます。`keymap`で好きなキーに設定しておくといいと思います
個人的には`⌥ + ↑ / ↓`とかにしてます
<img width="171" alt="openlogi-api] 2017-12-16 13-34-55.png" src="https://qiita-image-store.s3.amazonaws.com/0/180075/163eec6b-bdbf-4e2b-5835-edd752a4aa26.png">

## マクロ
複数のキー操作をマクロとして登録できます。
登録したマクロは通常の操作と同じようにショートカットキーを割り当てることが可能です。繰り返し入力するようなキー操作があれば登録しちゃいましょう
`Edit Macros`から登録が可能です。

## artisanコマンドの補完&実行(Laravelユーザのみ)
設定方法は[こちらの記事](https://qiita.com/futaro/items/478c9f2e00aa4f9026b8)が参考になります:pray:

例えば`artisan make` で何が作れるんだっけ・・？というときも`make`だけ打てば分かります
<img width="598" alt="Monosnap 2017-12-15 09-50-32.png" src="https://qiita-image-store.s3.amazonaws.com/0/180075/797804d8-5d2a-a51e-23f7-8878801997fc.png">
勿論自前のコマンドも参照できます
コマンドの書き方は毎度忘れてしまうので、補完ができて助かってます

# データベース周り
ご存知の方も多いと思いますがデータベースクライアントの機能があります
`Find Action`とかで`Database`で検索してあげればでてきます。最初に使う場合はDBの接続情報を設定してあげましょう

### DBコンソール
`Database`ウィンドウの右上のコンソールっぽいアイコンをクリックするとでてきます
<img width="265" alt="sessions__homestead_localhost__-_stockView2_-____Develop_private_stockView2_.png" src="https://qiita-image-store.s3.amazonaws.com/0/180075/53ebafc9-6d94-9667-da0c-4f3da8985129.png">

このコンソールが優秀で、テーブル名、カラム名、SQLの構文などをバンバン補完してくれます
こいつのおかげでカラム名がうろおぼえでもスムーズに作業できます:pray:
<img width="518" alt="homestead_localhost_-_stockView2_-____Develop_private_stockView2_.png" src="https://qiita-image-store.s3.amazonaws.com/0/180075/9c565a49-002d-828f-49bc-603c31c18930.png">

`Reformat Code` を押すといい感じに整形してくれて
<img width="221" alt="homestead_localhost_-_stockView2_-____Develop_private_stockView2_.png" src="https://qiita-image-store.s3.amazonaws.com/0/180075/1a624b0b-e3a1-4261-2acd-3d0bb7a5c974.png">

`⌘ + Enter`でクエリを実行してくれます
<img width="239" alt="stockView2] 2017-12-15 01-10-28.png" src="https://qiita-image-store.s3.amazonaws.com/0/180075/2c2b6dd9-f610-dd60-bee1-cff74535cac0.png">

### テーブル定義
上記のコンソールでテーブル名を`⌘ + B`や`⌘ + クリック`することで、テーブル情報をいい感じに表示してくれます
<img width="561" alt="stockView2] 2017-12-15 01-29-06.png" src="https://qiita-image-store.s3.amazonaws.com/0/180075/7dd577b0-df08-5c13-a2eb-3c8141dee42b.png">

# おまけ的な機能
## 壁紙
背景画像が設定できます。[こちら](https://www.jetbrains.com/help/idea/setting-background-image.html)を参考に。

## テーマ設定
`Material Theme` とか色々テーマのプラグインもあります。

## Docker Integration
なんかIDEからGUIでコンテナ立ち上げとかできます。
<img width="238" alt="stockView2] 2017-12-16 13-59-01.png" src="https://qiita-image-store.s3.amazonaws.com/0/180075/77e658c8-556a-d6d4-af49-3a7cbc61ba9c.png">

これにはさすがの僕もコマンド叩けばいいんじゃないかという気持ちがしています。いい使い方をご存知の方教えてください:pray:

なお、Vagrantも同様のプラグインがある模様です。

## vimモード
`IdeaVim`プラグインでvimモードにできます。あくまで擬似的なものなので完全に再現されているわけではないことにご注意ください

## まとめ
以上、PhpStormの~~布教活動~~オススメ機能を紹介しましたが、まだまだ僕も使いこなせていないたくさんの機能があります。「こんなこともできるの？スゲー」と感動するのがPhpStormの楽しさの１つだと思います。みなさんもよかったら使ってみてください:pray: