zshでanything.el風履歴検索(その4)
最近休日はゲームばっかやってます。ここ数年まともにやっていない反動なのかどうかなのかは定かではありませんが、おかげで(?)プログラミングがさっぱりです。
いい加減この見出しもどうかとは思うんですが、まだまだ改良を進めています。
とりあえず今回は、
- 半角スペースで区切って、複数の条件で検索できるようにした。
- よりそれっぽく検索できるようにした。
だけです。半角スペースで区切って、複数の語が含まれる履歴だけを抽出できるようにはしましたが、新しい履歴を検索する場合には、全部の履歴から検索するため、それなりに時間がかかってしまいます。
で、肝心の内容なんですが、色々付け足したりなんだかんだしていたら、250行とかになってしまっていましたので、興味のある方は、↓のgithubに置いてある.zshrcの中身から、
http://github.com/derutakayu/settings
# --- anything風に履歴を検索するためのメニュー。 〜 #---
となっている部分を切り取るなどして、御自分の.zshrcの末尾に貼り付けたりすると動作するかと思います。
なお、未だにcygwinでは動作が非常にもっさりです。というか正常動作しません(ぉ)ので、起動には十二分にご注意ください。
バックグラウンドプロセスを幾つも走らせている関係上、/tmpにゴミが残る可能性があります・・・。この辺は可能な限り早く修正したいんですが。
やっぱりzshで非同期検索というのは、実装してみると無理矢理感が否めません。有名なtetrisは非同期を実現しているように見えますが、あれも内部を除くと、キータイムアウトの間隔を上手く利用しているのは勿論ですが、何より文字入力が必要無いから出来ることなのかなぁ、と思えるような実装になっています。
zsh上で履歴検索をしてどーたらこーたらするよりは、emacs上でzshのコマンドラインを編集するようにした方がよっぽど早いかもしれません。
動作・アイデアなど、何かご意見、ご感想がありましたらどしどしと。