xyzzyのGrepとVxGrep

今まで使ってきたもの

getiaViewLinesをずっと使ってきていた。
けれど、操作性が悪い。あんまり過去のメモから必要な情報を得るのには使えないのかなとおもいながら、一応使ってきた。
結局、実質的にためたメモを死蔵することに。
それを解決するために、PPxとかPPvだとかを使ってきたわけです。そのときには、grepについてはとりあえずおいておこうといってた気がする。

テキストエディタ付属のgrep

最近、テキストエディタ付属のgrepソフトを使ったらなんとかなるんじゃね、と思いつく。今メモをとるのにxyzzyを使ってるけど、そういえばこれでgrepとかできたよな。

やってみると普通に使える。操作感もhowmで慣れたからか問題ない。
というわけで今回はgrepの使い方について書きます。あと、Vxgrepについて。

xyzzyGrep

ウィンドウが分割されて、上にファイル名と検索語の前後が、下にそのファイルの中身が表示される。
使うには、.xyzzyに次をコピペ。転載です。

http://ohkubo.s53.xrea.com/xyzzy/scratch.html

;;;... コマンドラインで指定したディレクトリから grep
;;;... xyzzy.exe -f external-grep C:\hoge
(require "grepd")
(defun external-grep ()
  (let ((*grep-directory-name-hook*
         #'(lambda ()
             (pop si:*command-line-args*))))
    (declare (special *grep-directory-name-hook*))
    (grep-dialog)))

これで、外部からgrepができるようになる。
僕の場合はfenrirから、フォルダを渡すようにする。

Ctrl+Gで、選択したフォルダをxyzzygrepできるように。

2g.txt
[.***;
xyzzyGrep|D:\bin\xyzzy\xyzzy.exe -f external-grep "%P"
]

キーカスタマイズとかできたらいいんだけど、しばらくはこれでいいかな。

VxGrep

VxEditorに付属しているgrep。これも、xyzzygrepと同じようなことができる。ウィンドウが上下に分割する、というのも似ている。
これで面白いとおもったのはインデックスが作れること。テキストファイル以外の中身も検索することができる。DesktopHEとかと同じように使えるということですね。
インデックスの作成には時間がかかるけれども、そのかわり一瞬で表示できる。
普通のgrepxyzzyに任せて、こっちはインデックス用にすることに。
インデックスでの検索というのは日常的にgrepの代わりに使うというのにはあまり向いていないかも知れないけど、自分の持っているファイルから総当たりで検索をしたいという場合には使えると思う。fenrirに対してEverythingが担っていた役割ですね。
DesktopHEは、僕が使った限りではあまりさくさく動いてくれなかった。こっちの方が便利そうな気がします。
インデックス検索の方法は、設定でインデックス格納フォルダとかインデックス対象フォルダを設定して、インデックスを構築して、検索ウィンドウでインデックスを利用して高速検索を行うにチェックを入れるだけ。

けど、インデックスの作成が一々めんどくさいとおもった。Hyper Estraierを利用しているらしいから、estcmdのコマンドラインが使えるのではないかとおもい試してみる。
http://hyperestraier.sourceforge.net/
より、Windows版のバイナリパッケージをダウンロード。そのなかにはいっているesecmd.exeをもちいる。それを、Vxgrepの入っているフォルダに移動。そして次のバッチファイルを作る。これを実行するとインデックスが更新される。

Vxgrepindex.bat
cd "D:\bin\VxEditor" 
"D:\bin\VxEditor\estcmd.exe" gather -cl -lt 1024 -fx .pdf,.rtf,.doc,.xls,.ppt,.docx,.xlsx,.pptx,.docm,.xlsm,.pptm,.howm T@estxfilt -ic CP932 -pc CP932 -sd -cm "インデックス格納フォルダ" "インデックス対象フォルダ"

fxオプションっていうのがよくわかんないや。追加したい拡張子を、ここにいれたらいいのかな。howmをとりあえず加えたところ、それもインデックス化されていたからたぶんあっているはず。

また、バッチファイルを表示しない方法もあるらしい。バッチファイルを、VBSファイルで実行するだとか。
http://rltm9940.blogspot.com/2008/06/desktophe.html
より。

バッチファイルを起動するVBSファイル
Set WshShell = WScript.CreateObject("WScript.Shell")
Call WshShell.Run( "cmd.exe /c Vxgrepindex.bat",0 , True ) 
MsgBox("インデックスを更新しました")

使うときには、このVBSファイルを実行する。そう頻繁に使うものでもないだろうし、一週間に一度くらい実行するような仕組みにしたらいいかな。

あと、参考にしたサイト

http://d.hatena.ne.jp/kkobayashi_a/20080424/p2

思ったこと

基本的に、テキストファイルをgrepでメモの閲覧のために使うには連動ビューというのが最低限必要なのかな、と思った。
また、フォルダ指定が容易であることも必須。

他との連携

同じような使い方をする、ということで関係するもの。

ファイル名検索はfenrir。ものによっては、Everythingを用いる。
fenrirのように一回きりパスを使うのではなく、ヒットした複数のパスを使いたいときには、PPxのwhere is file?を利用したPPxSeachName.ahkを用いる。
あと、howmによるリンク。howmでは、>>>という記号で、そのパスに飛ぶことができる。
こういうのと組み合わせることで、今までためたテキストファイルのメモを有効活用できそうな気がする。
あとは、howmの使い勝手をよくすることとかの細々としたことをするだけですな。