cygwin 1.7のgrepをWindowsのコマンドプロンプトで使用する

cygwinの1.7がテストバージョンとして公開されている。
http://cygwin.com/setup-1.7.exe
cygwinUTF-8化するとか大文字と小文字を区別するとかで結構変わっているらしい。
grepはというとUTF-8の日本語文書がgrep出来たとか、こちらも結構変わっているそうだ。
とりあえずcygwinからでなく、Windowsコマンドプロンプトから実行してみた。
パスを通さず cygwin1.7からgrepに必要なファイルを適当なフォルダにコピーして利用する場合に必要なファイルは次の通り。

C:/usr
├─bin
│      cygiconv-2.dll
│      cygintl-8.dll
│      cygwin1.dll
│      grep.exe
│
└─etc
    └─fstab.d
            unknown

コピーするexeとdllは1.5と変わらないけど、1.7からはfstab.dも必要らしい。
fstab.dの中のファイルunknownはWindowsのユーザ名で個人ごとに違うので注意。
つまり1.5の場合は etcはいらなくて、binの中のファイルだけでかまわないという事です。
ちなみにcygintl-8.dllはgettextとか入れると入るらしいですよ。

ファイルunknownの中身自体は何もなくても問題ない感じ。
fstab.dや環境変数 CYGWIN=nodosfilewarning が無いと

Huh?  No /etc/fstab file in \??\C:\cygwin1.7\etc\fstab.d\unknown?  Using de
fault root and cygdrive prefix...

というメッセージで出て鬱陶しい事この上ない。
ていうかHuh?って。


vim用のQFixGrepは外部grepcygwingrepを推奨しているので動かなくなったりすると困るということでcygwin1.7のgrepでQFixGrepが動作するか試してみた。
今回はcygwin上のvimからではなく、Windows上のvimからcygwingrepを利用する場合をテスト。
vimの外部grepとしてcygwin1.7のgrepを使用する場合も同じはず。


cygwin1.7はc:/cygwin1.7にインストールしたとして、基本的には.vimrcを次のように設定してやると動作した。

let $CYGWIN='nodosfilewarning'
let grepprg =c:/cygwin1.7/bin/grep\ -nH

QFixGrepの場合は以下の通り

let $CYGWIN='nodosfilewarning'
let mygrepprg = 'c:/cygwin1.7/bin/grep'
let MyGrep_ShellEncoding = 'cp932'

そして肝心のgrepですが、結局Sjis(cp932)の「だめ文字」も相変わらずgrepできず、QFixGrepにとっては若干面倒くさいだけでなにも変わる所が無いような……。
1.5のほうが何かと面倒がないですね。

ま、正式にリリースされるまでは色々変わると思うのですが、とりあえず書いておきます。