Friday, March 3, 2017

コマンド一発でソースコード検索&表示できる「peco」改が凄い!

lestrratさんがやってくれました。

ずいぶん前から、ソースコードを検索して読みやすいコマンドはないかなーと思っていました。個人的にはackで検索して見つかったファイルをlessで開いて再びキーワードを入れて当該行までジャンプしていたのですが、毎回毎回めんどくさい感じでした。コマンド一発でインクリメンタル検索してキーワード周辺のソースコードを読めるツールが欲しいなぁって思ってたんです。

とあるslackでお昼時に、mattnさんと「ほしいですよねー」という話から始まって、vimにあるgrepとかも物色しながら「いいのないねー」とか言ってたらkanさんが「@lestrrat 案件だ」って言い出して牧さんが召喚されてついさっきpecoに必要な機能が追加されてました。速いw

ためしにpicotlsの開発ディレクトリでpecoの一行ラッパーperoを起動し、「EVP_Digest」を検索してみました。こんな感じ。


こんなに直感的にソースコードが読める。
コマンドラインになれた人ならイメージ湧くかと思います。インデックスを作るみたいな下準備も何も必要ありません。
ただコマンドを実行するだけで対話的に検索して表示できる。
すばらしい!
こういうのが欲しかったんです。
ただまだ、pecoの本機能はまだtopic/commandブランチからマージされていませんし、バグがあるかもしれません。また高機能にするつもりもないでしょうから使用目的を選ぶのが先決かと思います。

ちなみに、こんな感じの一行ラッパーを書いて使ってます。pero --cc とやれば C のコードが、pero --java とやれば Java のコードだけが検索対象になります。

#! /bin/sh

exec ack "$@" . | peco --exec 'awk -F : '"'"'{print "+" $2 " " $1}'"'"' | xargs less '

ありがたや。ありがたや。

あわせて読みたい:「Big Sky :: ヘッダファイルだけでC++から使えるJSONパーサ「picojson」が凄い!

3 comments:

  1. I am waiting for your coming pictures. I wish you all good luck for your coming blogs and posts. Keep sharing!
    starfall | barney | abcya

    ReplyDelete


  2. The share your really gives us excitement. Thanks for your sharing. If you feel tired at work or study try to participate in our games to bring the most exciting feeling. Thank you!
    hotmail login | red ball | 192.168.1.1

    ReplyDelete