JetBrains IDEのCommand-line Launcherとag/pecoを使って検索した行を開く

本記事の目指すところ

  • JetBrainsのIDE使っても ag のような検索ツールを使って検索したい!
  • さらに検索したファイルをJetBrains IDE で開きたい!

下記Gifのように検索して開くことができるようになります

f:id:kao_bee:20181205192919g:plain
完成図

JetBrains IDEとは

JetBrains社の作るIDEたちのことです。 有料IDEですが、一番勢いのあるIDEの会社だと思います

https://www.jetbrains.com/products.html?fromMenu

僕自身も下記IDEたちを使っています

  • Rider
  • PyCharm
  • AppCode
  • RubyMine
  • WebStorm

前回(結構昔)はJavaScriptを使ったようなので今回はWebStormを使って説明します

Command-line Launcherの準備

JetBrains IDEにはコマンドラインから起動できるCommand-line Launcherがあります。 RubyMineはデフォルトで使えるようになっているっぽいですが、基本的には Tools > Create Command-line Launcher から生成します

ag / pecoの準備

ag

ag というのは ack より早い ack みたいな検索コマンドですね。 ack って何って言われたら説明難しいですが、ファイルから任意の文字列を検索してくれる便利なやつです

https://github.com/ggreer/the_silver_searcher

peco

peco というのは標準出力から受け取ったものをいい感じにフィルタリングしてくれるコマンドです

https://github.com/peco/peco

インストール

多分どっちもHomeBrewで入れられるはずです(試してない)

$ brew install ag
$ brew install peco

.bashrc の準備

WebStormなどのJetBrains IDE内のTerminalから実行できるように .bashrcfunction を書きます ワンライナー力大事

function agwebstorm() {
    ag $1 | peco --query "$LBUFFER" | perl -ne 'chomp; my @fields = split /:/, $_; print "--line ${fields[1]} ${fields[0]}"' | xargs webstorm
}

やってることとしては ag で検索したやつを peco でフィルタリングしてファイル名と行数をいい感じにCommand-line Launcherに渡している感じです

以上、WebStormから使ってみましょう