【サクラエディタ】クリップボードから一発Grep!ダイアログなしで高速検索するマクロ(除外設定対応版)
サクラエディタでGrep検索(複数ファイル検索)をするとき、毎回「Grepダイアログ」が出てきて、条件を確認してEnter…という手順を踏んでいませんか?
「特定のプロジェクトフォルダを検索するのは決まっているから、クリップボードの単語で今すぐ検索してほしい!」
そんな時に役立つマクロ(JScript)を作りました。
これを使うと、キーボードショートカット一発で、設定したフォルダ・除外条件に基づいて即座にGrep検索が走ります。
このマクロでできること
- ダイアログなしでGrepを実行
- クリップボードにある文字列を検索ワードとして自動取得
- 検索対象フォルダを固定できる(例:
C:\pcbffなど) -
除外ファイル・除外フォルダを事前に指定可能(
.gitやnode_modulesなどを無視) - サブフォルダも検索対象
マクロのソースコード
以下のコードをコピーして、テキストファイルに貼り付け、拡張子を .js にして保存してください。(例:FixedGrep.js)
// 条件指定型クリップボードGrepマクロ_v2 (FixedGrep.js)
// ========== 設定エリア(ここを書き換えてください) ==========
// 1. 検索場所(フォルダパス)
// ※注意: パスの区切り文字「\」は「\\」と2つ重ねて書いてください。
var searchPath = "C:\\pcbff";
// 2. 対象ファイル
var targetTypes = "*.*";
// 3. 除外ファイル(拡張子など)
// ※複数ある場合はセミコロン(;)で区切ってください。
var ignoreFiles = "*.bak;*.obj;*.exe;*.dll";
// 4. 除外フォルダー 【ここを追加しました】
// ※フォルダ名のみ記述してください。パス記号は不要です。
// ※複数ある場合はセミコロン(;)で区切ってください。
var ignoreFolders = ".git;.svn;node_modules;obj";
// 5. 検索オプション
// 2 (サブフォルダ) + 8 (大小区別なし) + 32 (行単位出力)
var searchOpt = 2 + 8 + 32;
// ========================================================
// クリップボードのテキストを取得
var searchWord = Editor.GetClipboard(0);
if (searchWord == "") {
Editor.InfoMsg("クリップボードが空です");
} else {
// Grepの「ファイル」引数用文字列を作成
// 基本形: "*.* !*.bak !excludeDir\"
var strFiles = targetTypes;
// 除外ファイルの結合処理
if (ignoreFiles !== "") {
var filesArr = ignoreFiles.split(";");
for (var i = 0; i < filesArr.length; i++) {
// 空要素でなければ " !*.bak" のように追加
if(filesArr[i] !== "") {
strFiles += " !" + filesArr[i];
}
}
}
// 除外フォルダーの結合処理
if (ignoreFolders !== "") {
var foldersArr = ignoreFolders.split(";");
for (var j = 0; j < foldersArr.length; j++) {
if(foldersArr[j] !== "") {
// フォルダ除外は末尾に "\" をつけるのがサクラエディタのルール
// マクロ上では "\\" と書く必要がある
strFiles += " !" + foldersArr[j] + "\\";
}
}
}
// 動作確認用:どのようなコマンドになるか見たい場合は下の行のコメント(//)を外してください
// Editor.InfoMsg("検索条件: " + strFiles + "\n場所: " + searchPath);
// Grep実行
Editor.Grep(searchWord, strFiles, searchPath, searchOpt);
}
設定のポイント
このマクロを使う際は、コード上部の「設定エリア」をご自身の環境に合わせて書き換えてください。
1. 検索パスの記述ルール
Javascriptの仕様上、フォルダ区切りの \ は \\ と2回重ねて書く必要があります。
-
NG:
C:\Users\Data -
OK:
C:\\Users\\Data
2. 除外フォルダの設定
ignoreFolders 変数に、検索したくないフォルダ名をセミコロン(;)区切りで指定します。
マクロが自動でサクラエディタ用の除外記法(!フォルダ名\)に変換してGrepコマンドに渡してくれます。
導入手順
ステップ1:マクロの登録
- サクラエディタのメニューから [設定] > [共通設定] を開きます。
- [マクロ] タブを選択します。
- 空いている番号を選び、名前(例:
FixedGrep)を付けます。 -
[File] の参照ボタンを押し、保存したファイル(
FixedGrep.js)を選択します。 - [設定] ボタンを押します。
ステップ2:キー割り当て
- 同じく [共通設定] の [キー割り当て] タブを開きます。
- [種別] プルダウンから 「外部マクロ」 を選択します。
- 先ほど登録した
FixedGrepがリストに出るので選択します。 - 好きなキー(例:
Ctrl + F12やCtrl + Shift + Gなど)に割り当てます。
まとめ
これで、調べたい関数名や変数をコピーしてショートカットキーを押すだけで、指定したフォルダから一瞬で検索結果が出るようになります。
開発作業などで「いつものフォルダ」を何度も検索する場合に非常に便利ですので、ぜひ試してみてください。