秀丸エディタで指定ディレクトリを除外する Grep を実現する
結論
秀丸エディタ単体では無理なので
- 別の grep ツールで grep 結果をファイルに吐き、
- そのファイルを秀丸エディタで開いてタグジャンプする
というやり方を用いる。
別の grep ツール?
Git for Windows に同梱された grep コマンドがオススメ。
正しくインストールできているかどうかは以下で確認できる。
$ where grep C:\Program Files\Git\usr\bin\grep.exe $ grep --version grep (GNU grep) 3.0 Copyright (C) 2017 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>. ...
ラッパーバッチファイル
「別の grep ツール」と「秀丸エディタ」を中継する仕組みが必要。
やり方は色々あるが、ここでは私が考えたものを紹介。
考え方
以下のような仕組みをバッチファイルで作った。
- カレントディレクトリ配下を grep する
- 除外したいディレクトリはあらかじめ指定しておく
- 使い方は
grepex キーワード
とする
動作としては、 grepex キーワード
を実行すると grepresult なるファイルが秀丸エディタで開かれる。この中身は以下のようになっており、秀丸エディタで普通にタグジャンプすることができる。
./source1.js:36: // @todo util.js からコピペしたままなので DRY する ./source2.js:103: // @todo 変数名がわかりづらいので具体的にする ...
バッチファイル中身
grepex.bat
@echo off setlocal set keywords=%* set outfilename=grepresult set outfilepath=%~dp0%outfilename% set editorpath=C:\Program Files\Hidemaru\HIDEMARU.EXE grep -rn %keywords% ./ --exclude-dir={.git,node_modules,lib} --exclude=%outfilename% > %outfilepath% start "" "%editorpath%" "%outfilepath%"
利用時に設定が必要なのは以下二つ。
editorpath
変数- 利用するテキストエディタのフルパス
- 動作確認は秀丸エディタでしかしてない
- 上記の grepresult フォーマットに対応したエディタなら何でも良い
--exclude-dir
オプション- 除外したいディレクトリを指定する
- ここでは以下三つを指定している
- .git
- node_modules
- lib