知らないと損?RubyMine(IntelliJ)で役立つ細かいテクニック７つ

こんにちは｡
皆さんRubyMine愛してますか｡僕は愛してます｡

ペアプロとかやってると､｢え?いまのどうやったの?｣って聞きたくなるときって､ありませんか｡僕はあります｡
今回は､RubyMineで使えるそんな小技をを紹介します｡(たぶんほとんどのテクニックがIntelliJファミリー共通です)

## あらゆるものから検索する Search Everywhere 
[公式ヘルプ](https://www.jetbrains.com/ruby/webhelp/searching-everywhere.html)

とりあえずShiftキーをﾊﾞｼﾊﾞｼｯと二連打します｡

ファイル検索やコマンド検索のようなポップアップから､いろんなものを横断して検索・実行することができます｡
![image](https://qiita-image-store.s3.amazonaws.com/0/55737/79b565b7-b457-e533-8810-8be126cdd6c6.png)

ActionやGenerateのコマンドなんかも出てくるので､とても重宝します｡Settingsに至ってはポップアップ上でON/OFFを切り替えたりもできます｡
ちなみにポップアップ右上のアイコンを押すとSerch Everywhereで検索する範囲を設定できます｡
![searchEverywhereSettings.png](https://qiita-image-store.s3.amazonaws.com/0/55737/2d958003-a2e1-0c8d-1314-050d5a96c850.png)


## これだけは外せないプラグインRailways
[Webサイト](http://plugins.jetbrains.com/plugin/7110)
`rake routes`はRails開発で欠かせないです｡でした｡このRailwaysを導入するまでは｡
![image](https://qiita-image-store.s3.amazonaws.com/0/55737/0a5d2885-713f-bc83-47ae-5ecc9d89e25e.png)

Railwaysは､`rake routes`の結果を見やすく整形して表示してくれるプラグインです｡
パス・アクション・名前が一覧表示されてて､上の検索窓からはインクリメンタルサーチができます｡もういちいち`rake routes`を`grep`する必要はないんです｡

初回表示や読み込みは少し時間がかかりますが(裏で`rake routes`してるんでしょうね)､Routeに変更がなければキャッシュしてくれるので待ち時間もないです｡
一覧のRouteを選択すると下の方に詳細が表示されます｡ActionのところをクリックすればコントローラのActionへジャンプすることができます｡

ちなみにプラグインの追加・削除は､Settings → Pluginsから行えます｡
Browse Repositoriesをおすと､オンラインのリポジトリを検索してインストールすることができます｡
[公式ヘルプ](https://www.jetbrains.com/ruby/webhelp/plugins.html)
![PluginRepository.PNG](https://qiita-image-store.s3.amazonaws.com/0/55737/d3cbdff3-f3ed-a2d8-09cc-0d17a2f23055.png)


## 今開いてるファイルのパンくずを表示するNavigation Bar
[公式ヘルプ](https://www.jetbrains.com/ruby/webhelp/navigation-bar.html)
Railsって同じ名前のファイルをいっぱい作りますよね｡indexとかshowとか｡パンくずがあれば混乱する心配もありません｡
![image](https://qiita-image-store.s3.amazonaws.com/0/55737/e4abcce8-e648-ddcd-faef-859155dbd68d.png)

設定方法は View → Navigation Barをチェックするだけ!
![image](https://qiita-image-store.s3.amazonaws.com/0/55737/5aeb6be9-827a-c02c-100a-756da956336e.png)

パンくずはただのパンくずじゃなくてNavigation Barなので､クリックするとディレクトリ/ファイルをナビゲートすることができます｡WindowsのExplorerのような感じです｡
![image](https://qiita-image-store.s3.amazonaws.com/0/55737/c7793041-47a5-10e6-5a69-301a2d3fb672.png)

## このメソッドなんだっけ｡｡｡というときに役立つチラ見機能2つ

### Quick Documentation
[公式ヘルプ](https://www.jetbrains.com/ruby/webhelp/viewing-inline-documentation.html)
Ctrl + Qで､キャレットが乗ってるメソッドのドキュメントをポップアップで参照できます｡
![image](https://qiita-image-store.s3.amazonaws.com/0/55737/e728201d-b9d8-440e-167e-f6c00d164662.png)

### Quick Definition
ドキュメントだけじゃ物足りねーよ!!という方もいると思います｡
そんなときは､Ctrl + Shift + Iを押してください｡メソッドのソースがポップアップで表示されます｡
[公式ヘルプ](https://www.jetbrains.com/ruby/webhelp/viewing-definition.html)
![image](https://qiita-image-store.s3.amazonaws.com/0/55737/bba5558d-ef26-46b7-0381-299daaf5e66d.png)

Ctrl + Bのメソッド定義へのジャンプと､適宜使い分けるとよい感じです｡

## マニアックだけど超便利なコードジャンプ4つ
#### Action(Controller)から対応するViewへジャンプ
Actionの定義箇所の左にある赤いアイコンをクリックすると､Viewのソースを表示することができます｡
![image](https://qiita-image-store.s3.amazonaws.com/0/55737/1a37ad6d-c9a2-6e15-0952-18533ac95c87.png)

#### Viewから対応するAction(Controller)へジャンプ
上記の逆です｡Viewの左に表示されているAのアイコンをクリックすると､Actionへジャンプすることができます｡
![image](https://qiita-image-store.s3.amazonaws.com/0/55737/f8e048f9-75ac-613e-97f2-f9e670fe320e.png)

#### Model,View,Controller,Helper間を自在に飛び回るSwitch to XXX
シフト二連打(もしくはCtrl + Shift + A) → Switch to と入力すると選択肢に出てきます｡
![image](https://qiita-image-store.s3.amazonaws.com/0/55737/8567137d-e773-8e58-c54c-d5703d1d82e3.png)
![image](http://i.gyazo.com/618ef4951dca5defd996c787e212de7b.gif)
Railsのネーミングルールに従って作られているファイルなら自在にファイル間をナビゲートすることができます｡
これは強力です｡是非使ってみてください｡とても便利なのになぜかデフォルトではショートカットキーが設定されていないので､お気に召しましたら適当なショートカットを当ててあげてください｡

#### Specファイルとテスト対象のソースを行き来するNavigate → TestとNavigate → Test Subject
こちらもとても便利｡アプリのソースファイルを開いてCtrl + Shift + Tを押すか､上部メニューのNavigate → Testから､関連するSpecの一覧が表示されてそちらへジャンプすることができます｡
![image](https://qiita-image-store.s3.amazonaws.com/0/55737/e14b8291-d06d-9121-8121-c7bd0bbc7007.png)

![image](http://i.gyazo.com/5392b3e108c228a28bafaad08f71ee3d.gif)

逆もできます｡Specファイルを開いてCtrl + Shift + Tを押すか､上部メニューのNavigate → Test Subjectから､Specの対象となっているアプリのソースへジャンプできます｡

## メソッドやカラムの一覧をポップアップ表示するStructure View
[公式ヘルプ](https://www.jetbrains.com/ruby/webhelp/navigating-with-structure-views.html)
Ctrl + F12を押すと､そのクラスで有効なメソッド・フィールドなどの一覧をポップアップ表示できます｡
![image](https://qiita-image-store.s3.amazonaws.com/0/55737/9a0e7477-5697-e032-1ad4-56616df67aa1.png)
項目を選んでEnterを押せば定義箇所にジャンプすることができます｡探すのが面倒な場合はキーを入力するとインクリメンタルフィルターができます｡

特に便利なのが､ModelのStructureを表示しているとき｡右上のShow migration fieldsにチェックを入れると､カラムの一覧も表示することができます｡
![image](https://qiita-image-store.s3.amazonaws.com/0/55737/cf2b20b8-b58a-b15b-ac4e-095358b8c6ba.png)
RailsはModelのファイルを見ただけだとどんなカラムがあるのかわからないので､この機能とても助かっています｡

## コード補完の確定キーによる挙動の違い
これはかなり細かいです｡が､覚えておいて損はないはず｡
補完候補を選択して確定するとき､以下の操作が有効です

- Enter
  - 挿入して確定します｡
- Tab
  - 入力箇所の単語を上書きして確定します｡
- `(`
  - 確定後､末尾に`()`を挿入します｡
- `=`, `.`
  - 確定後､末尾に`=`､`.`を挿入します｡

言葉だとよくわからないと思うので実際見てください｡
### enterで確定
![image](http://i.gyazo.com/b26f29ee65c34207a34284ef43258fc4.gif)
普通に確定されました｡

### `(`で確定
![image](http://i.gyazo.com/ca2dc89feb8ad6f172561e25aea09653.gif)
末尾に`()`が挿入されています｡キャレットも括弧の中にいるので､結構いい感じです｡

### `=`で確定
![image](http://i.gyazo.com/f05e753f600807579703749530cec69f.gif)
末尾に`=`が挿入されるので､代入のコードを書くとき等に便利かも｡スペースが入らないので微妙ではあります｡

### `.`で確定
![image](http://i.gyazo.com/2b42c6b8163bcf8224003138aea7a9d9.gif)
末尾に`.`が挿入されます｡チェインでメソッドを呼ぶときなんかはリズムよくコードが書けて気持ちいいです｡

### EnterとTabの違い
行中で編集している時に､挿入して確定するか､単語を上書きして確定するかの違いがあります｡
#### Enterの場合 ⇒ 挿入確定
![image](http://i.gyazo.com/95bfc32ca52464692f84bf91289fa8f3.gif)

#### Tabの場合 ⇒ 上書き確定
![image](http://i.gyazo.com/b09aaa98b18a893aeba5875d97d24bd0.gif)
メソッドを置き換えたいときなどはこちら。

以上です。マニアックなものもありますが､きっと生産性を向上させてくれると思います｡
Enjoy RubyMine!