App::pmgrepバージョンアップ
https://github.com/toritori0318/p5-App-pmgrep
新機能を2つほど追加しました。
pm-grep-project (プロジェクト内検索)
pm-grep-project <search_string>
こちらはオレオレ仕様で少しわかりづらいかもです。
主にvimやemacsで利用することを想定しています。
たとえば、以下のようなCatalystプロジェクトがあったとしましょう。
CatApp ├── Makefile.PL ├── catapp.conf ├── extlib │ ├── Hoge │ │ ├── Fuga.pm │ ├── Hoge.pm ├── lib │ ├── CatApp │ │ ├── Controller │ │ │ └── Root.pm │ │ ├── Model │ │ └── View │ └── CatApp.pm ├── root │ ├── ... ├── script │ ├── ... └── t ├── ...
pm-grep-projectは、コマンド実行時のカレントディレクトリ以上を遡り、
「lib または extlib」
を探し出し、見つかったら
「lib または extlib」
に対してackします。
つまり、上記の例だと
カレントディレクトリが以下のいずれにいた場合でも...
CatApp CatApp/lib/CatApp/Controller CatApp/Model CatApp/root/....
CatApp/lib または CatApp/extlib
をackしてくれるということです。
利用シーン
vimで CatApp/lib/CatApp/Controller/Root.pm
を開いているときに
「このプロジェクト内をgrepしたいなぁ」
「このプロジェクト内のこのモジュールのこのサブルーチンに飛びたいなぁ」
なんていうことはよくあることです。
2番目のやつは tags 使えば済む話ですが
プロジェクトごとにいちいちやらないといけないし
定期的に更新しないといけないのが面倒ですよね!*1
しかしpm-grep-project使えば
何も設定せずともこのような要件を満たせるということです。楽チン!
vim-pmgrep
https://github.com/toritori0318/vim-pmgrep
vimプラグインも更新しました。
以下のコマンドが追加されています。
- :PmgrepInc
- :PmgrepProject
ちなみにPmgrepProjectのみですが、
ビジュアルモードで選択してgrepすることも可能です。
自分の場合、.vimrcに以下のようなショートカットを追記してます。
vmap <silent> <Space>pp :PmgrepProjectVS<CR> vmap <silent> <Space>ppp :PmgrepProjectVSSub<CR>
ビジュアルモードで文字列を選択して
「
「
なかなか便利なのでよく使ってます!
*1:ある程度自動化出来るかもしれませんが