Windows環境で、vimでgrep検索するには、 jvgrepがなくてはならない。しかし、ある現場で導入して試すもうまく行かない。( Windowsで日本語検索ができない。 · Issue #51 · mattn/jvgrep · GitHub)。
既に直っているのだけど、その時は、「やはりWindows環境では、grepうまくいかんなー」と勝手に諦めていたので、vimからサクラエディタのGrep呼べんかなーと調べたことがあった。
この サクラエディタBBSにあるように、サクラエディタのGrepをコマンドラインで実行することは、
sakura.exe -GREPMODE -GKEY=“KeyWord” -GFILE=“FileName” -GFOLDER=“Folder” -GOPT=SP2 -GCODE=99
とすれば可能だ。
しかし、これだとサクラエディタ(Grep画面)が立ち上がってしまい、そのつど、閉じる必要がある。
更に調べると、いつのまにか新しいコマンドラインオプションが追加されている。
Sakura Editor / PatchUnicode / #762 Grepで標準出力に出力するコマンドラインオプションを追加
-GOPT=U 追加 ・標準出力に出力し、Grep画面にデータを表示しない ・出力のエンコード設定はファイルのエンコードを使用します(-CODEまたはタイプ別設定のデフォルト文字コード) ・実行後に終了します
早速、エディタの最新版を落してみる。確かにオプション-GOPT=U
を追加すると、Grep画面が立ち上がっても、自動で閉じてくれる。
2014-10-15以前のサクラエディタ(Ver 2.0.5.0)では-GOPT=Uは無効
Ver 2.3.1.0では-GOPT=Uは有効
let $PATH .= ';C:\Program Files (x86)\sakura'
command! -nargs=* SGrep call s:SakuraGrep(<f-args>)
function! s:SakuraGrep (key, file)
let key = a:key
let file = a:file
let folder = substitute(expand('%:p:h'),' ','\\\\ ','g')
let command = 'sakura -GREPMODE -GKEY="' . key . '" -GFILE="' . file . '" -GFOLDER="' . folder . '" -GOPT=USPR2 -GCODE=99'
execute ':tabe'
execute ':r!' . command
endfunction
サクラエディタGrep画面が立ち上がるが自動で閉じる
Grep結果を別タブに貼り付けてるだけ…
そのおかげで、上記なvim functionからサクラエディタGrep機能を呼びだすことに成功した。まあ、今はjvgrepが正常に機能するので全く使っていない。とはいえ、この経験が前回のエントリーであるvim script function作成のきっかけになったのだから、無駄ではなかったのだけど。