メインメニューを開く
ホーム
ヘルプ
よくある質問
マクロリファレンス
マクロライブラリ
プラグインライブラリ
構文ファイル
テーマ
寄付・開発支援
開発室
開発者のブログ
ログイン
設定
MeryWiki について
免責事項
MeryWiki
検索
「
次/前の文字列を検索・改
」を編集中
2019年9月7日 (土) 22:34時点における
Sukemaru
(
トーク
|
投稿記録
)
による版
(
→機能
)
(
差分
)
← 古い版
|
最新版
(
差分
) |
新しい版 →
(
差分
)
警告: このページの古い版を編集しています。
公開すると、この版以降になされた変更がすべて失われます。
警告:
ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。
ログイン
または
アカウントを作成
すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。
スパム攻撃防止用のチェックです。 けっして、ここには、値の入力は
しない
でください!
[https://www.haijin-boys.com/software/mery/mery-tips#2 ショートカットキー [Ctrl+Shift+ ↓ または ↑ の機能(「次/前の文字列を検索」コマンド)] をカスタマイズしたマクロです。 == 機能 == 選択範囲が改行をふくむ複数行(論理行)のばあいでも「次/前の文字列を検索」と同様のジャンプ機能を実現する目論見です。 <br><br> ; 設定項目: ''optionEnable'' <br> 「検索」ダイアログのオプションフラグを使用するかしないかを指定します(優先オプション)。 * <b style="color:#0000c0;">true</b> なら、カスタマイズなしで、ショートカットキー [Ctrl+Shift+ ↓ / ↑ ] の機能そのままに「次/前の文字列を検索」のジャンプを実行します。 : [Ctrl+Shift+ ↓ / ↑ ] の機能そのままでツールバーにマクロのアイコンを登録したい場合は、<b style="color:#0000c0;">true</b> にしてください。 : ※「検索」ダイアログのオプションフラグ「大文字と小文字を区別する」や「文末まで検索したら文頭に移動する」が適用されます。 : ※ ジャンプした後も、「検索」ダイアログに検索文字列の履歴が残ります。 * <b style="color:#c00;">false</b> なら、「検索」ダイアログのオプションフラグを一度リセットしてから「次/前の文字列を検索」と同様のジャンプを実行します。 : ※ リセット(解除)されるオプションフラグは、以下の4項目です。 :* 「大文字と小文字を区別する」 :* 「正規表現を使用する」 :* 「単語のみを検索する」 :* 「文末まで検索したら文頭に移動する」 : ※「大文字と小文字を区別する」「文末まで検索したら文頭に移動する」については、べつの変数をもうけて再設定可能にしてあります。 : ※「終了したら閉じる」と、ベータ版 2.6.10 で追加された「インクリメンタルサーチ」のオプションフラグは解除されません。 : ※ ジャンプの後、「検索」ダイアログのオプションフラグは復旧しません。 : ※ ジャンプの後、「検索」ダイアログに検索文字列の履歴を残しません。 : <span style="color:#c00;">※「検索」ダイアログに検索文字列の最新の履歴は空になるので、「次を検索 (F3)」と「前を検索 (Shift+F3)」に影響します。 </span> <br> ; 設定項目: ''highlightEnable'' <br> ジャンプした後に「'''検索文字列の強調表示'''」を残すかどうかを指定します。 * <b style="color:#0000c0;">true</b> なら、検索した文字列はハイライト状態のまま残ります。 : ※「検索文字列の強調を解除」のショートカットキーは [Alt+F3] ですので、任意のタイミングで手動で解除してください。 * <b style="color:#c00;">false</b> なら、検索した文字列のハイライトを残しません。 : ※ 自動マーカーが有効なら自動マーカーによる強調表示は残りますので、「検索文字列の強調表示」を手動で解除するのが面倒な人は <b style="color:#c00;">false</b> にしてください。 <br> ---- ▼ ''optionEnable = <b style="color:#c00;">false</b>'' のとき ▼ ; 設定項目: ''findAroundEnable'' <br> * <b style="color:#0000c0;">true</b> なら、「'''文末まで検索したら文頭に移動する'''」オプションを有効化して、「次/前の文字列を検索」と同様のジャンプ機能を実行できます。 : ※ ジャンプ後も「検索/置換」ダイアログ内の「文末まで検索したら文頭に移動する」オプションは有効化されたままになります。 <br> ; 設定項目: ''matchCaseEnable'' <br> * <b style="color:#0000c0;">true</b> なら、「'''大文字と小文字を区別する'''」オプションを有効化して「次/前の文字列を検索」と同様のジャンプ機能を実行できます。 : ※ ジャンプ後も「検索/置換」ダイアログ内の「大文字と小文字を区別する」オプションは有効化されたままになります。 <br> ; 設定項目: ''multiLinesEnable'' <br> '''選択範囲が改行をふくむ複数行のばあい'''でも「次/前の文字列を検索」と同様のジャンプを可能にするための独自オプションです。 <br> ''multiLinesEnable = <b style="color:#0000c0;">true</b>'' でも選択範囲が改行をふくまない1行内であれば、''optionEnable = <b style="color:#c00;">false</b>'' の説明内容でジャンプを実行します。 * <b style="color:#0000c0;">true</b> なら、選択範囲が複数行でも「次/前の文字列を検索」と同様のジャンプができます。 : ※ 選択範囲が改行記号をふくむ複数行の状態からジャンプしたばあいは、''highlightEnable = <b style="color:#0000c0;">true</b>'' であっても「検索文字列の強調表示」は残りません(Mery 本体の仕様上の都合)。 * <b style="color:#c00;">false</b> で選択範囲が複数行だったばあいは、選択範囲はいったん解除され、キャレット付近の単語を自動選択して「次/前の文字列を検索」と同様のジャンプをします。 == 「次の文字列を検索・改」 == <source lang="javascript"> #title="次の文字列を検索" #tooltip = "次の文字列を検索・改" // #icon = "Mery用 マテリアルデザインっぽいアイコン.icl",124 /** * ------------------------------------ * 「次の文字列を検索・改」 * sukemaru, (2019/09/07) * ------------------------------------ * 「次の文字列を検索」機能をカスタマイズ * * 複数行選択から検索に対応 * ※ 複数行からの場合は、検索強調なし、履歴なし */ // ---------- ▼ 設定項目 ▼ ---------- // optionEnable と highlightEnable 両方を false にすると、最新の検索履歴を空にする var optionEnable = false; // true なら検索ダイアログの「正規表現」以外のオプションが適用される // false なら検索オプションをリセットする // ※「終了したら閉じる」と、ベータ版 2.6.10 で追加された「インクリメンタルサーチ」のオプションフラグは解除されない var highlightEnable = true; // true なら検索文字列の強調を残す // false なら検索文字列の強調を解除する // ▼ optionEnable = false のとき ▼ var findAroundEnable = true; // true なら、文頭まで検索したら文末に移動する // false なら、文頭まで検索したらストップ // ※ true の場合、ジャンプ後も検索ダイアログの「文末まで検索したら文頭に移動する」は ON のままにする var matchCaseEnable = false; // true なら、大文字と小文字を区別する // false なら、大文字と小文字を区別しない // ※ true の場合、ジャンプ後も検索ダイアログの「大文字と小文字を区別する」は ON のままにする var multiLinesEnable = true; // true なら、複数行選択から検索(検索強調なし、履歴なし)できる // false なら、複数行選択から検索をしない // ※ true でも、1行内の選択範囲なら highlightEnable を適用 // ※ false で複数行選択のときは、キャレット位置から単語自動選択して検索 // ---------- ▲ 設定項目 ▲ ---------- var d = editor.ActiveDocument, s = d.selection; var sy = ScrollY; // 検索オプションを適用して検索する場合 ※「次の文字列を検索」コマンド if ( optionEnable ) { editor.ExecuteCommandByID( MEID_SEARCH_NEXT_WORD = 2136 ); } // 検索オプションをリセットして検索する場合 else { var findAround = findAroundEnable ? meFindAround : 0; var matchCase = matchCaseEnable ? meFindReplaceCase : 0; // 検索オプションをリセット s.Find( "", 1 + findAround + matchCase ); // 複数行選択から検索する場合 if ( multiLinesEnable && s.Text.indexOf( "\n" ) > -1 ) { s.Find( s.Text.replace( /\W/g, "\\$&" ) , meFindNext + meFindReplaceRegExp + findAround + matchCase ); s.Find( "", 1 + findAround + matchCase ); } // 1行内の範囲選択または単語自動選択から検索する場合 else { s.FindRepeat( meFindNext + meFindRepeatWord ); if ( ! highlightEnable ) { s.Find( "", 1 + findAround + matchCase ); } } } // 検索強調表示の有無 d.HighlightFind = highlightEnable; // 選択範囲変更イベントを発生させる var anc = s.GetAnchorPos(), act = s.GetActivePos(); s.Collapse( meCollapseStart ); s.SetAnchorPos( anc ), s.SetActivePos( act, true ); // スクロール位置を調整 ScrollY = ( ScrollY == sy ) ? sy : s.GetActivePointY( mePosView ); </source> == 「前の文字列を検索・改」 == <source lang="javascript"> #title="前の文字列を検索" #tooltip = "前の文字列を検索・改" // #icon = "Mery用 マテリアルデザインっぽいアイコン.icl",125 /** * ------------------------------------ * 「前の文字列を検索・改」 * sukemaru, (2019/09/07) * ------------------------------------ * 「前の文字列を検索」機能をカスタマイズ * * 複数行選択から検索に対応 * ※ 複数行からの場合は、検索強調なし、履歴なし */ // ---------- ▼ 設定項目 ▼ ---------- // optionEnable と highlightEnable 両方を false にすると、最新の検索履歴を空にする var optionEnable = false; // true なら検索ダイアログの「正規表現」以外のオプションが適用される // false なら検索オプションをリセットする // ※「終了したら閉じる」と、ベータ版 2.6.10 で追加された「インクリメンタルサーチ」のオプションフラグは解除されない var highlightEnable = true; // true なら検索文字列の強調を残す // false なら検索文字列の強調を解除する // ▼ optionEnable = false のとき ▼ var findAroundEnable = true; // true なら、文頭まで検索したら文末に移動する // false なら、文頭まで検索したらストップ // ※ true の場合、ジャンプ後も検索ダイアログの「文末まで検索したら文頭に移動する」は ON のままにする var matchCaseEnable = false; // true なら、大文字と小文字を区別する // false なら、大文字と小文字を区別しない // ※ true の場合、ジャンプ後も検索ダイアログの「大文字と小文字を区別する」は ON のままにする var multiLinesEnable = true; // true なら、複数行選択から検索(検索強調なし、履歴なし)できる // false なら、複数行選択から検索をしない // ※ true でも、1行内の選択範囲なら highlightEnable を適用 // ※ false で複数行選択のときは、キャレット位置から単語自動選択して検索 // ---------- ▲ 設定項目 ▲ ---------- var d = editor.ActiveDocument, s = d.selection; var sy = ScrollY; // 検索オプションを適用して検索する場合 ※「前の文字列を検索」コマンド if ( optionEnable ) { editor.ExecuteCommandByID( MEID_SEARCH_PREV_WORD = 2137 ); } // 検索オプションをリセットして検索する場合 else { var findAround = findAroundEnable ? meFindAround : 0; var matchCase = matchCaseEnable ? meFindReplaceCase : 0; // 検索オプションをリセット s.Find( "", 0 + findAround + matchCase ); // 複数行選択から検索する場合 if ( multiLinesEnable && s.Text.indexOf( "\n" ) > -1 ) { s.Find( s.Text.replace( /\W/g, "\\$&" ) , meFindPrevious + meFindReplaceRegExp + findAround + matchCase ); s.Find( "", 0 + findAround + matchCase ); } // 1行内の範囲選択または単語自動選択から検索する場合 else { s.FindRepeat( meFindPrevious + meFindRepeatWord ); if ( ! highlightEnable ) { s.Find( "", 0 + findAround + matchCase ); } } } // 検索強調表示の有無 d.HighlightFind = highlightEnable; // 選択範囲変更イベントを発生させる var anc = s.GetAnchorPos(), act = s.GetActivePos(); s.Collapse( meCollapseStart ); s.SetAnchorPos( anc ), s.SetActivePos( act, true ); // スクロール位置を調整 ScrollY = ( ScrollY == sy ) ? sy : s.GetActivePointY( mePosView ); </source> == メモ == ; [[マクロリファレンス:Selection インターフェイス#Find メソッド|Find()]] メソッドと [[マクロリファレンス:Selection インターフェイス#FindRepeat メソッド|FindRepeat()]] メソッドの定数 <source lang="javascript"> document.selection.Find() メソッド 指定のパターンを検索します。 0: meFindPrevious カーソル位置から前を検索します。 1: meFindNext カーソル位置から次を検索します。 2: meFindReplaceCase 検索する単語の大文字と小文字を区別します。 4: meFindReplaceOnlyWord 完全に一致する単語を検索します。 8: meFindAround 文書の末尾まで検索したら先頭から検索を開始します。 16: meFindReplaceRegExp 正規表現で検索します。 document.selection.FindRepeat() メソッド 前回検索した文字列を検索します。 0: meFindPrevious カーソル位置から前を検索します。 1: meFindNext カーソル位置から次を検索します。 2: meFindRepeatWord 選択範囲が空の場合はカーソル位置の単語を検索します。 </source>
編集内容の要約:
MeryWikiへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細は
MeryWiki:著作権
を参照)。
著作権保護されている作品は、許諾なしに投稿しないでください!
このページを編集するには、下記の数式を計算してその答えを欄に入力してください (
ヘルプ
):
いちたすには =
編集を中止
編集の仕方
(新しいウィンドウで開きます)
スポンサーリンク