有馬総一郎のブログ

(彼氏の事情)

2017年03月17日 22:25:44 JST - 2 minute read - Vim

Sakura EditorのGrepをコマンドラインで実行して、自動でGrep画面を閉じる

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
vimからサクラエディタGrep機能を呼び出す

サクラエディタGrep画面

サクラエディタGrep画面が立ち上がるが自動で閉じる

サクラエディタGrep

Grep結果を別タブに貼り付けてるだけ…

そのおかげで、上記なvim functionからサクラエディタGrep機能を呼びだすことに成功した。まあ、今はjvgrepが正常に機能するので全く使っていない。とはいえ、この経験が前回のエントリーであるvim script function作成のきっかけになったのだから、無駄ではなかったのだけど。

Tags: Vim

vim script functionを作成してみる 動画の表示領域を特定の範囲に切り抜く(Crop)