pecoってどう便利なんだろう、と思っていたのだけど、その便利さを実感できたのでメモ。
やりたいこと
「hoge」でgrepかけて、引っかかったファイルのうち任意のものをviで開きたい
ってことがよくあります。
$ grep hoge -Rni app/
app/controller/hoge_controller.rb:3:class HogeControllerapp/controller/hoge_controller.rb:12: tmp = hoge.hogege.hugogoapp/controller/hoge_controller.rb:42: tyome = hoge.sotr_by(&:bar)app/model/hoge.rb:3:class Hoge :$ vi app/controller/hoge_controller.rb +42
面倒くさい。
検索結果から選んでvimで開く
ついでに、grepよりag
(the_silver_searcher)のほうが好きなので、そっちを使います。
# agで検索した結果から選択し、ファイルを開くfunction agvi(){path=$(ag $*| peco | awk -F: '{printf $1 " +" $2}'| sed -e 's/\+$//')if[ -n "$path"];then
vim $pathfi}
$cd$GOPATH/src/github.com/peco/
$ agvi chan
ag
のオプションを使って、ファイル名検索とかも簡単
$cd$GOPATH/src/github.com/peco/
$ agvi -g re
解説
path=$(ag $*| peco | awk -F: '{printf $1 " +" $2}'| sed -e 's/\+$//')
ag $*# agviに渡した引数をすべて使ってagする| peco # 結果をpecoする| awk -F: .. # pecoで選んだものを「ファイル名 +行数」の形に整える| sed -e .. # 上ので行数がないなら「+」も消す# 上の結果を変数pathに入れて、pathが空白でないならvimで開く# pecoの画面でESCなど使って何も選択しない時などを考慮if[ -n "$path"];then
vim $pathfi