RubyMineをさらに便利にするプラグインたち：後編

[2021年12月12日　追記]
RubyMineのバージョン2021.2.3に合わせて使い方を修正しました。

# はじめに

[Ateam cyma Advent Calendar 2019](https://qiita.com/advent-calendar/2019/ateam-cyma) の 3日目です。
本日の担当は昨日に引き続き、エイチームのEC事業本部でWebアプリケーションエンジニアをしている@hibiheionです。

この記事は[RubyMineをより便利にするプラグインたち：前編](https://qiita.com/hibiheion/private/01670ac2c508b25f9f15)の続きです。
後編では、あると便利なプラグインを紹介します。


# 紹介内容について
前編と同じ内容ですが、紹介方法について改めて記載しておきます。

- 各プラグインの基本機能のみ説明しています。詳細は各プラグインのWebページをご確認ください。
- 特定の言語やサービスを使えるようにするものは対象外としています。
- 個人的な評価を三段階でつけています。
    - 優：ないと困る
    - 良：使用頻度が多め
    - 可：使用頻度が少なめ
- ショートカットはキーマップ次第で変わるのでメニューからの操作で説明しています。なお、メニューから操作するとショートカットキーを教えてくれるプラグインもあります。
- プラグインの情報は記事を公開した2019年12月時点のものです。



# プラグインの紹介
## 一覧

全部で20個あります。
順序は評価と名称の順です。
後編では「AceJump」から「SQL Formatter」の11個を説明します。
残りのプラグインは[前編](https://qiita.com/hibiheion/private/01670ac2c508b25f9f15)で説明しています。


| 名称                     | 概要                                              | 評価            |
| :--                    | :--                                             | :--           |
| Grep Console           | tail -fで出力したログをGrep検索で絞り込める                           | 優             |   |
| highlightbracketpair   | カーソルがある箇所を囲んでいるカッコをハイライト表示する                 | 優             |   |
| IdeaVim                | Vimと同じような操作で使用できるようにする                               | 優             |   |
| Key Promoter X         | ショートカットキーが存在する操作をマウス等から実行した際に操作内容をショートカットキーとともに記録する | 優             |   |
| Quick File Preview     | ファイル一覧で選択したファイルのプレビューを表示する                 | 優             |   |
| Railways               | Railsのルーティングの一覧を表示する                            | 優             |   |
| Rainbow Brackets       | 対になるカッコを色分けして表示する                                | 優             |   |
| Scroll From Source     | Projectツールウィンドウ（ファイル一覧）の開いているファイルの場所に移動する       | 優             |   |
| Tabdir                 | タブ一覧で同じ名前のファイルにはディレクトリ名を表示する                    | 優             |   |
| [AceJump](#acejump) | ページ内の指定した文字にカーソルを移動する                           | 良             |   |
| [Git Scope](#git-scope)              | ファイルの一覧からGitの差分を確認できる                           | 良             |   |
| [GitToolBox](#gittoolbox)             | Git連携の機能を強化する                                   | 良             |   |
| [MultiHighlight](#multihighlight)         | 複数の検索結果を異なった色でハイライト表示する                               | 良             |   |
| [String Manipulation](#string-manipulation)    | 色々な方法で文字列を操作する                                  | 良             |   |
| [BrowseWordAtCaret](#browsewordatcaret)      | カーソルがあたっている単語をファイル内検索する                              | 可             |   |
| [JSON Viewer](#json-viewer)            | JSONを見やすい形に整形する                                 | 可             |   |
| [Open in splitted tab](#open-in-splitted-tab)   | 参照先を分割したウィンドウで表示する                              | 可             |   |
| [Pipe Table Formatter](#pipe-table-formatter)   | パイプ（｜）を使ったテーブルを揃える | 可 |
| [Realigner](#realigner)              | 指定した文字で複数行の連結、複数行への分割、文字列の囲い込みができる                            | 可             |   |
| [SQL Formatter](#sql-formatter)          | SQLを見やすい形に整形する                                  | 可             |   |


## AceJump
https://plugins.jetbrains.com/plugin/7086-acejump/

### 機能
- ページ内の指定した文字にカーソルを移動する
    - 例えば、ページ内の「A」という文字がある場所に少ないタイプ数で移動できる
- 効率よくカーソルを移動できる
- 使用例  
「d」をタイプすると下記のように「d」の位置にナビゲーションが表示され、この状態で「j」をタイプすると「def」にカーソルを移動する
![ace_jump.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206611/16552c97-815e-2f8f-4f80-a0d25cf15e5f.png)

### 使い方
説明のために機能の検索から実行していますが、ショートカットキーを割り当てて使うのが現実的です。

- 指定した文字に移動
    1. shiftキーを2回押して表示される検索ウィンドウで「acejump」を検索する
    2. 検索結果から「Activate / Cycle AceJump mode」を選択する
    3. 移動したい文字（1文字）をキーボードからタイプする
    4. ページ内のタイプした文字の左にナビゲーションが出るので、移動したい先のアルファベットをキーボードからタイプする
- 文字以外に以下の場所を対象として指定できる。

    | 対象 | アクション名 |
    | :-- | :-- |
    | 行の先頭 | Start AceJump in All Line Starts Mode |
    | 行の最初の文字 | Start AceJump in All Line Indents Mode |
    | 行の末尾 | Start AceJump in All Line Ends Mode |
    | 上記3つのいずれか | Start AceJump in All Line Marks Mode |
    | 単語の先頭 | Start AceJump in All Words Mode |
    | 単語の末尾 | Start AceJump in End Mode |
    | キャレットより前の単語の先頭 | Start AceJump in All Words Before Caret Mode |
    | キャレットより後ろの単語の先頭 | Start AceJump in All Words After Caret Mode |
    | 移動先の単語を選択する | Start AceJump in Target Mode |
    | 移動先の単語の宣言もしくは使用箇所 | Start AceJump in Target Mode |

### 補足
- 機能を限定した[AceJump-Lite](https://plugins.jetbrains.com/plugin/9803-acejump-lite/)というプラグインもある
    - 個人的にはAceJump-Liteのほうがナビゲーションが見やすいのでこちらを使っている


## Git Scope
https://plugins.jetbrains.com/plugin/10083-git-scope/

### 機能
- ファイルの一覧からGitの差分を確認できる
    - 内容はトップメニューの「VCS→Git→Commit file…」で出てくる内容と同じ
- Git Scopeはサイドメニューに出せるため確認しやすい

### 使い方
- ツールウィンドウの表示
    - サイドメニューから「Git Scope」のツールウィンドウを開く
    - サイドメニューに出ていない場合、トップメニューの「View→Tool Windows→Git Scope」から表示できる
- ツールウィンドウの操作
    - ツールウィンドウには差分のあるファイルの一覧が表示される
    - ファイル名を右クリックして「Show Diff」を選択すると差分を確認できる


## GitToolBox
https://plugins.jetbrains.com/plugin/7499-gittoolbox/

### 機能
- Git連携の機能を拡張する
- 次のような機能が増える
    - ステータスバーに出す情報を増やす
        - ステータスの表示
        - 今いる行の最終更新者の表示（git blameの情報）
    - blame（更新情報）が見れるようになる
    - ブランチにタグをつけられる
    - Gitのリモートリポジトリを定期的に自動でフェッチし、変更があれば通知する

### 使い方
- プラグインの設定の変更
    - 設定画面で「Version Control→GitToolBox」を開く
        - プロジェクトに紐付かない設定
    - 設定画面で「Version Control→GitToolBox→GitToolBox Project」を開く
        - プロジェクト別の設定
- git blameの確認
    - 右クリックメニューの「Git→show inline blame」にチェックを入れると、カーソルが当たっている行のblameをつねに表示する（意外と邪魔にならない）
    - 右クリックメニューの「Git→show blame details」でカーソルのある行の詳細なblameをポップアップで表示する
        - ポップアップからコミット履歴の確認やリビジョンのコピーなどができる
- ブランチへのタグの追加
    - トップメニューの「Git→GitToolBox→Push Tags on Branch」を選択する


## MultiHighlight
https://plugins.jetbrains.com/plugin/9511-multihighlight/

### 機能
- 複数の検索結果を異なった色でハイライト表示する
- 込み入ったコードを読まないといけないときにあると便利
- 使用例
![multihighlight.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206611/635d65fc-658f-abe1-feb4-7b634fdf44ef.png)


### 使い方
説明のために機能の検索から実行していますが、ショートカットキーを割り当てて使うのが現実的です。

- ハイライト表示の切り替え
    1. 対象の文字列を選択する
    2. shiftキーを2回押して表示される検索ウィンドウで「multihighlight」を検索する
    3. 検索結果から「MultiHighlight: toggle highlight」を選択する
- ハイライト表示の全クリア
    1. shiftキーを2回押して表示される検索ウィンドウで「multihighlight」を検索する
    2. 検索結果から「MultiHighlight: clear highlights in current editor」を選択する


## String Manipulation
https://plugins.jetbrains.com/plugin/2162-string-manipulation/

### 機能
- 色々な方法で文字列を操作する
- 操作内容は盛りだくさん
    - フォーマット（JSON等）ごとに文字列をエスケープする
    - エンコードする（URLエンコード等）
    - スネークケース・キャメルケースといった記述方式を変換する
    - 数値に対して値の加減算などをの計算を行う
    - 複数の行を並び替える
    - 条件を指定して不要な行を削除する
    - 余分な半角スペースを取り除く（トリム）
    - 複数の行の左端や右端を揃える

### 使い方
- 文字列の操作方法
    1. 操作対象の文字列を選択する
    2. 右クリックメニューの「String Manupilation」を選択する
- プラグインの設定の変更
    - 設定画面で「Other Settings→String Manipulation」を開く


## BrowseWordAtCaret
https://plugins.jetbrains.com/plugin/201-browsewordatcaret/

### 機能
- カーソルがあたっている単語をファイル内検索する
    - 通常のファイル内検索でwordsにチェックを入れて検索したときの検索方法を使う
- IdeaVimを使っていると、「*」の検索で同じことができる
- 通常のファイル内検索より少ない手数で使用できる

### 使い方
説明のために機能の検索から実行していますが、ショートカットキーを割り当てて使うのが現実的です。

- 下方向に検索
    1. 検索したい単語にカーソルを合わせる
    2. shiftキーを2回押して表示される検索ウィンドウで「browse to」を検索する
    3. 検索結果から「browse to next word」を選択する
- 上方向に検索
    1. 検索したい単語にカーソルを合わせる
    2. shiftキーを2回押して表示される検索ウィンドウで「browse to」を検索する
    3. 検索結果から「browse to previous word」を選択する


## JSON Viewer
https://plugins.jetbrains.com/plugin/9679-json-viewer/

### 機能
- JSONを見やすい形に整形する
- レスポンスの解析などで使う

### 使い方
- ツールウィンドウの表示
    - サイドメニューから「JSON Viewer」のツールウィンドウを開く
    - サイドメニューに出ていない場合、トップメニューの「View→Tool Windows→JSON Viewer」から表示できる
- JSONの整形
    1. JSONをコピーし、ツールウィンドウにペーストする
    2. ツールウィンドウの「Format」ボタンをクリックする


## Open in splitted tab
https://plugins.jetbrains.com/plugin/7407-open-in-splitted-tab/

### 機能
- 参照先を分割したウィンドウで表示する

### 使い方
1. ジャンプしたいメソッド等にカーソルを合わせる
2. 右クリックメニューの「Go To→Open in split tab」を選択する


## Pipe Table Formatter
https://plugins.jetbrains.com/plugin/7550-pipe-table-formatter/

### 機能
- パイプ（｜）を使ったテーブルを揃える
    - RubyではCucumberやTurnipのテストフィーチャ（Gherkin）のテーブルで使う
- ただ、日本語などのマルチバイト文字が含まれていると揃って見えない
- 操作例
    - 操作前  
![pipe_before.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206611/7dbe7586-9354-98e3-a01f-3d67c2175afe.png)
    - 操作後  
![pipe_after.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206611/ef9ea063-457d-39c3-bf18-abbc10268c38.png)

### 使い方

<font color="Red">RubyMine 2021.2.3ではファイル全体しか対象にできないようです。</font>

1. 対象ファイルを開く
2. 右クリックメニューの「Pipe Table Formatter→Format Pipe Tables in File」を選択する


## Realigner
https://plugins.jetbrains.com/plugin/7082-realigner/

### 機能
- 指定した文字で複数行の連結、複数行への分割、文字列の囲い込みができる
    - 例えば、ハッシュの項目が増えたときに「,」で複数行に分けられる
    - 分割や結合に使う文字は決められる

### 使い方
- 文字列の分割
    1. 分割する文字列を選択する
    2. トップメニューの「Edit→Split into Lines」を選択する
    3. 分割に使う文字などを選択する
- 文字列の結合
    1. 結合する文字列を選択する
    2. トップメニューの「Edit→Join Lines With Glue」を選択する
    3. 結合に使う文字などを選択する
- 文字列の囲い込み
    1. 囲む文字列を選択する
    2. トップメニューの「Edit→Wrap」を選択する
    3. 囲む文字などを選択する
        - 開始文字と終了文字で別の文字を指定できる


## SQL Formatter
https://plugins.jetbrains.com/plugin/10858-sql-formatter/

### 機能
- SQLを見やすい形に整形する
- ログに出ているSQLをコピペしてSQLを確認できる

### 使い方
- ツールウィンドウの表示
    - サイドメニューから「SQL Formatter」のツールウィンドウを開く
    - サイドメニューに出ていない場合、トップメニューの「View→Tool Windows→SQL Formatter」から表示できる
- SQLの整形
    1. SQLをコピーし、ツールウィンドウにペーストする
    2. ツールウィンドウの「Format」ボタンをクリックする


# まとめ

RubyMineのプラグインは以下のサイトで検索できます。
https://plugins.jetbrains.com/search?products=ruby

メジャーなプラグインで出てきていないものもありますが、それは私の使い方に合わなかったためです。
例えば、前編で紹介したIdeaVimはVimmer以外には不要なものですよね。
時間があるときにでも探してみれば、自分にあったプラグインがきっと見つかると思います。

最後にプラグインの開発者の皆様に対して感謝を述べて締めたいと思います。
プラグインを作ってくださってありがとうございます！


# 次回予告

[Ateam cyma Advent Calendar 2019](https://qiita.com/advent-calendar/2019/ateam-cyma) の 3日目の記事は以上です。
2回にわたりお付き合いいただきありがとうございました。

4日目はエンジニアの@bayasistさんが担当します。
Railsのフォームオブジェクトに関する記事です。


# さいごに

株式会社エイチームでは、一緒に働けるチャレンジ精神旺盛な仲間を募集しています。

エンジニアで興味を持った方はcymaの[Qiita Jobs](http://bit.ly/35E1I08)をご覧ください。

そのほかの職種は、[エイチームグループ採用サイト](http://bit.ly/2XQpd3q)をご覧ください。