App::pmgrepバージョンアップ

https://github.com/toritori0318/p5-App-pmgrep

新機能を2つほど追加しました。

追加されたコマンド

pm-grep-inc (@INC内検索)

pm-grep-inc <search_string>

そのままですね。
@INCに入ってるモジュールをackで検索します。

pm-grep-project (プロジェクト内検索)

pm-grep-project <search_string>

こちらはオレオレ仕様で少しわかりづらいかもです。
主にvimemacsで利用することを想定しています。


たとえば、以下のような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>


ビジュアルモードで文字列を選択して
pp」とすると、pm-grep-project で文字列検索してくれます。
ppp」とすると、pm-grep-project でサブルーチンっぽい文字列検索してくれます。


なかなか便利なのでよく使ってます!

*1:ある程度自動化出来るかもしれませんが