0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【サクラエディタ】クリップボードから一発Grep!ダイアログなしで高速検索するマクロ(除外設定対応版)

0
Posted at

【サクラエディタ】クリップボードから一発Grep!ダイアログなしで高速検索するマクロ(除外設定対応版)

サクラエディタでGrep検索(複数ファイル検索)をするとき、毎回「Grepダイアログ」が出てきて、条件を確認してEnter…という手順を踏んでいませんか?

「特定のプロジェクトフォルダを検索するのは決まっているから、クリップボードの単語で今すぐ検索してほしい!」

そんな時に役立つマクロ(JScript)を作りました。
これを使うと、キーボードショートカット一発で、設定したフォルダ・除外条件に基づいて即座にGrep検索が走ります。

このマクロでできること

  • ダイアログなしでGrepを実行
  • クリップボードにある文字列を検索ワードとして自動取得
  • 検索対象フォルダを固定できる(例:C:\pcbff など)
  • 除外ファイル・除外フォルダを事前に指定可能(.gitnode_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:マクロの登録

  1. サクラエディタのメニューから [設定] > [共通設定] を開きます。
  2. [マクロ] タブを選択します。
  3. 空いている番号を選び、名前(例: FixedGrep)を付けます。
  4. [File] の参照ボタンを押し、保存したファイル(FixedGrep.js)を選択します。
  5. [設定] ボタンを押します。

ステップ2:キー割り当て

  1. 同じく [共通設定][キー割り当て] タブを開きます。
  2. [種別] プルダウンから 「外部マクロ」 を選択します。
  3. 先ほど登録した FixedGrep がリストに出るので選択します。
  4. 好きなキー(例: Ctrl + F12Ctrl + Shift + G など)に割り当てます。

まとめ

これで、調べたい関数名や変数をコピーしてショートカットキーを押すだけで、指定したフォルダから一瞬で検索結果が出るようになります。

開発作業などで「いつものフォルダ」を何度も検索する場合に非常に便利ですので、ぜひ試してみてください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?