◀マクロトップへ
  • 588 複数の単語で単語検索(色分け付)するマクロV2
  • [588] 複数の単語で単語検索(色分け付)するマクロV2 SNK 2014年12月05日 00:29

    ( 投稿[563]の改良版です )

    最近のサクラエディタは、検索する際に「単語単位で探す」をオンにすると、
    複数の単語を検索できます。しかも5色までの色分けまでしてくれます。

    この便利な機能を、手軽に使うためのマクロを書いてみました。
    Ctrl+ダブルクリックに割り当てると便利です。
    単語を追加するたびに、新しい色をつけて次々とハイライトしていけます。
    空行や行末など単語がない場所で起動すると、ハイライトをクリアします。

    SearchWordsPlus.js
    -----------------------------------
    // *************************************************
    // SearchWordsPlus.js (Ver.2)
    //
    // 環境 : sakura2.0.6.0以降専用
    // 機能 : 複数の単語で単語検索を行う
    // 使用例: Ctrl+ダブルクリック に割り当てする。
    // ダブルクリックに[Macro/投稿/116]の割り当て。
    // 設定>タイプ別設定>カラー にて
    // 検索文字列~5 の色を設定しておくこと。
    // *************************************************

    var strNewWord ;
    var strLastWords ;
    var strSearchWords ;

    // -- 単語を選択 --
    //Editor.SelectWord() ;
    //<- マクロを Ctrl+ダブルクリックにアサインした場合、
    // 「Ctrl+左クリック」の時点で既に単語選択されるため、
    // ここはコメントアウトしてください。

    // -- 選択単語を追加する --
    strNewWord = Editor.GetSelectedString(0);

    if ( strNewWord == "" ){
    // -- 単語が存在しない場所で起動した場合はクリアする --
    Editor.SearchClearMark(0);
    Editor.SetCookie( "window", "SearchWords","");
    } else {
    // -- 単語を"SearchWords"というCookieに保存し、複数単語検索する --
    strLastWords = Editor.GetCookie( "window", "SearchWords", "" );
    strSearchWords = strLastWords + " " + strNewWord;
    Editor.Left();
    Editor.SearchNext( strSearchWords, 2051 );
    //<- 2051 = 0x01+0x02+0x800 (単語単位+英大小区別+履歴非登録)
    Editor.SetCookie( "window", "SearchWords", strSearchWords );
    }
    -----------------------------------
    検索条件はプログラマ向けを想定しています。

    Ver1は、前の検索文字列を取得するためにクリップボードを使っている点が難点でした。
    Ver2では、サクラエディタ2.0.6.0以降の機能であるSetCookieを使用しています。

    次のマクロと共存が可能です。
    ・[Macro/投稿/116] ダブルクリックして選択範囲と同じ単語をハイライト
    http://sakura.qp.land.to/?Macro%2F%C5%EA%B9%C6%2F116
    -----------------------------------
    S_SelectWord(0);
    S_SearchClearMark(0);
    -----------------------------------

    私は、
    ・ダブルクリックを、上の(投稿/116)の1単語の単語検索
    ・Ctrl+ダブルクリックを、今回の複数単語の単語検索
    というようにキー割り当てを設定し、併用して使っています。