searchdialog,searchup,searchdown文(Ver8.22対応版) 目次− 検索系文− searchdialog,searchup,searchdown文 searchdialog, searchup, searchdownはダイアログボックスで指定するパラメータを同時に指定するようになっています。パラメータは以下のようにコンマで区切って必要なものを指定してください。 searchdialog 検索文字列 [,word] [,casesense | nocasesense] [,regular | noregular] [,fuzzy] [,inselect] [,linknext] [, hilight | nohilight]wordを指定すると、単語検索になります。 casesenseは大文字/小文字の区別をするという意味です。 nocasesenseは大文字/小文字の区別をしません。 casesenseとnocasesenseのいずれも指定しない場合は、正規表現(regular)の指定があるときは自動的にcasesenseの指定になり、正規表現の指定がないときは自動的にnocasesenseの指定になります。 regularを付けると正規表現で検索します。 正規表現の書き方は、「\」を書く場合はマクロの文字列の書き方と二重になるので注意が必要です。 例えば、検索ダイアログの正規表現でのタブの検索は「\t」と書きますが、マクロのregular付きでは「"\\t"」と書きます。 「\」そのものは検索ダイアログでは「\\」と書きますが、マクロのregular付きでは「"\\\\"」と書きます。 noregularを付けると正規表現でない通常の検索をします。 regularとnoregularのいずれも指定しない場合は、あいまい検索(fuzzy)の指定があるときは自動的にregularの指定になり、あいまい検索の指定がないときは自動的にnoregularの指定になります。 fuzzyを付けるとあいまい検索をします。 inselectを付けると範囲選択しているときの「選択した範囲内のみ」をチェックした状態と同じ動作になります。 inselectで検索した後は、finddown,findup,finddown2,findup2は「選択した範囲内のみ」の動作になります。これを解除するにはescapeinselect文を使います。 linknextを付けると次の秀丸エディタも続けて検索します。 hilightを付けると「検索文字列の強調」になります。nohilightを付けると「検索文字列の強調」が無効になります。(V5.00以降) さらに以下のパラメータを指定できます。(V6.50以降) masknormal 追加の条件「普通の文字」を除く maskcomment 追加の条件「コメント」を除く maskifdef 追加の条件「#ifdef等の無効部分」を除く maskscript 追加の条件「スクリプト部分」を除く maskstring 追加の条件「文字定数」を除く masktag 追加の条件「HTML/XMLタグ」を除く maskonly 追加の条件を「のみ」にする loop 一周する noclose 「検索したら閉じる」をOFFにする(searchdialogのみ) searchoption相当の数値を直接指定することができます。(V6.50以降) searchdown "[a-z]", 0x00000010; searchdown "[a-z]", regular; inselectに限っては、数値の前に記述しておくことができます。(V8.00以降) searchdown "a", inselect, 0x02; 成功したかしなかったかによって結果コードを返します。結果コードはresultキーワードで参照することができます。 成功した場合は 1 (true)になり、失敗した場合は 0 (false)になります。 searchdialogのダイアログでキャンセルした場合は -2 になります。(V6.50以降) 検索文字列には上限があります。上限を超える可能性がある場合は事前に文字数をカウントして判断する必要があります。 参照: 検索/置換文字列の上限について searchdownは、カーソル位置の次の文字から検索を開始します。カーソル位置から検索するには、searchdown2を使います。 searchdown等の文を使うと、検索ダイアログボックスの中の検索条件(大文字/小文字の区別、正規表現のON/OFF等)がマクロ内で実行した検索条件に書き換わってしまいます。マクロでsearchdown文などを使っても検索ダイアログの検索条件を変わらないようにするには、searchdown等を実行する前に、「setcompatiblemode 0x20000;」を実行する方法があります。(V8.20以降より)
|