//--------------------------------------------------------------------------- // REPLACEIN : 範囲選択した領域内で置換を実行するルーチン // [Usage] : // call REPLACEIN $$s_str, $$r_str, ##flag; // ##num = ##return; // // $$s_str : 検索文字列 // $$r_str : 置換文字列 // ##flag : 検索オプションのフラグ(下記の表を参照) // ##num : 置換された文字列の数 // // 備考: Ver.2.16 以降では検索系のコマンドに inselect オプション // (範囲選択領域内の検索)が追加され、 // このルーチンと同等のことが簡単にできるようになりました。 // // 検索オプションと対応する数字: //  <検索オプション>      <10進数> //   単語の検索             1 //  大文字/小文字の区別        2 //  置換かどうか            4 //  (置換の場合)問い合わせの有無    8 //  正規表現              16 //  あいまい検索            32 //  次の秀丸も検索(Win95のみ)     128 // ※ 指定したいオプションに対応する数を足した物を第3引数に指定する。 // ex. 「単語の検索」で「問い合わせをする」… 1 + 8 = 9 を指定 // REPLACEIN: escape; // 選択範囲の座標を取得 moveto selendx, selendy; ##ex = column+1; ##ey = lineno; moveto seltopx, seltopy; ##tx = column+1; ##ty = lineno; ##selfound = getininum("hidemaru.ini","Env","SelectFound"); writeininum "hidemaru.ini", "Env", "SelectFound", 1; // 前回の検索文字列、検索オプションを保存 $$s_buf = searchbuffer; ##s_opt = searchoption; // 検索条件を設定 if( (##3 & 32) != 0 ) ##3 = (##3 | 16); // あいまい検索には正規表現が必要 setsearch $$1, ##3; ##num = 0; while( 1 ){ finddown; if( !result ) break; else { disabledraw; escape; ##tc = column + 1; ##tl = lineno; moveto selendx, selendy; ##ec = column + 1; ##el = lineno; // 選択範囲を出たら終了 if( (##el>##ey)||((##el==##ey)&&(##ec>##ex)) ) break; beginsel; movetolineno ##tc, ##tl; enabledraw; if( ##3&8 ){ // 置換の確認 question "置換しますか?"; if( !result ){ escape; continue; } } delete; insert $$2; ##ey = ##ey + lineno - ##el; ##num = ##num + 1; } } enabledraw; setsearch $$s_buf, ##s_opt; // 検索条件の復帰 writeininum "hidemaru.ini", "Env", "SelectFound", ##selfound; return ##num; //---------------------------------------------------------------------------