percol+zshで複数行コマンドの履歴を実行する

スポンサード リンク

以前書いたように,私はpercolを使ってzshの履歴検索を拡張している。 zshで余計な履歴を残さない・削除する。percolとの連携を前提に で書いたように,全てのzshのメモリ上に履歴削除を反映させるのは 面倒だ。そこで,historyコマンドではなく.zsh_historyをソースとして percolにしぼり込みをさせたい。

しかし,percolは行単位の絞り込みをおこなうスクリプトだから

for i in `ls`
do
    mv $i ${i}_bak
done

のような複数行に渡るコマンド履歴を実行するには難がある。これは,.zsh_historyには

for i in `ls`\
do\
    mv $i ${i}_bak\
done

として記録されているので,

for i in `ls`; do; mv $i ${i}_bak; done

と相互変換するスクリプトBRconv.pyを作成して,複数行コマンド履歴の実行・削除を実現することにした。

方法

まず,以下の内容でBRconv.py を作成して,pathの通ったところに保存する。

#!/usr/bin/env python

次に,.zshrcに次のように記述する。

最後に,.percol/rc.pyで次のように設定する。

key

これにより,percolで履歴から複数行コマンドを実行できるようになる。

Comments !

social