入力をunite.vimで絞り込めるコマンドpercov作った

tyru/percov · GitHub
id:moozさんのpercolにインスパイアされました。

使い方

$ find -type f | grep hoge | percov

みたいにするとvimが立ち上がってuniteで即座に絞り込める状態になります。

$ percov file

みたいにするとfileの内容を読み込みます。
ようするに入力を行ごとに絞り込めるってことですね。
id:moozさんのpercolはPythonで書かれてて自前で絞り込みを実装してるっぽい*1ですが、
unite-lineがあるので楽できました。

実装

実装は超簡単で、バッファの行を絞り込めるunite-lineというのがあるので、
バッファに入力を読み込んでからunite-lineを呼び出してるだけです。
シェルスクリプトです。
強いて言えば入力がなかったらuniteを立ち上げないようにしてるぐらいです。

#!/bin/sh
#
# percov - Start unite-line if buffer is not empty.

READ_FROM_PIPE=
[ -t 0 ] || READ_FROM_PIPE='-'
vim -c 'if line("$") !=# 1 || getline(1) !=# "" | execute "Unite -no-split line" | endif' $READ_FROM_PIPE "$@"

*1:違ったらごめんなさい