検索文字列の強調表示について(検索の都度、新しい強調色を適用する仕方は?)

  1. ドキュメントの利用(閲覧・編集など)に当たっては、文字列の検索は多用されます。
    一連の作業で、数件以上の文字列を検索することもよくあります。

    このような時、「既に適用されている強調色(文字色・背景色)は保持・表示したまま、検索の都度、新しい強調色を適用する」にはどのように設定すれば良いのでしょうか?
    マクロで指定できるのでしたら、コードはどのようになるのでしょうか?
    お教えください。

    PCの環境
    Windows 10 64Bit
    Mery (*86) ver 3.2.8

     |  konnchan  |  返信
  2. こんにちは。Meryユーザーです。

    Meryの検索機能では、複数回の検索結果・ハイライトを保持する機能はマクロであってもできないはずですが、そういった用途であれば「マーカー機能」というのが活用できるのではないかと思います。

    以下のような操作で使用できます。

    1. 「メニューバー > 表示 > ツールバー > マーカーバー」にチェックを入れる
    2. ハイライトしたい文字列を選択し、「メニューバー > 表示 > マーカー > マーカーに追加/削除」を選択する
    ⇒1で表示したマーカーバーに選択文字列が表示され、対象が指定色でハイライトされる
    3. 必要に応じて、マーカーバーからマーキング文字列や色を編集/削除する

    2の「マーカーに追加/削除」の操作は、設定からキーボードショートカットを割り当てることもできますので、多用する場合はショートカット設定もしておくとスムーズに使用できます。ご参考まで。

     |  yuko  |  返信
  3. アドバイスありがとうございます。
    マーカー機能は、私も使わせて頂いていますが、この機能は、「固定的」に強調表示したい文字列があるときには、非常に便利ですが、文章ごとに(都度)、検索したい文字列が変わるとき(そも場面ごとに、強調表示したい文字列が追加されるとき)は、必ずしも十分とは言えません。
    このため、選択した文字列、或いはカーソル位置の文字列を、「新たな色」で強調表示させたい(既設定のものは強調ひょうじさせたままで)という使い方を想定しています。
    調べものをしているとき、新出単語・キーワードを、次々と調べるときなどで
    す。
    以上、宜しくお願いします。

    > こんにちは。Meryユーザーです。
    >
    > Meryの検索機能では、複数回の検索結果・ハイライトを保持する機能はマクロであってもできないはずですが、そういった用途であれば「マーカー機能」というのが活用できるのではないかと思います。
    >
    > 以下のような操作で使用できます。
    >
    > 1. 「メニューバー > 表示 > ツールバー > マーカーバー」にチェックを入れる
    > 2. ハイライトしたい文字列を選択し、「メニューバー > 表示 > マーカー > マーカーに追加/削除」を選択する
    > ⇒1で表示したマーカーバーに選択文字列が表示され、対象が指定色でハイライトされる
    > 3. 必要に応じて、マーカーバーからマーキング文字列や色を編集/削除する
    >
    > 2の「マーカーに追加/削除」の操作は、設定からキーボードショートカットを割り当てることもできますので、多用する場合はショートカット設定もしておくとスムーズに使用できます。ご参考まで。

     |  konnchan  |  返信
  4. こんばんは。Mery を開発している者です。

    yuko さん、サポートのご協力ありがとうございます。

    yuko さんがご回答くださっているとおり、マーカー機能をご活用いただくのがお手軽かと思います。

    ご指摘のとおり、マーカー機能は【すべての文書】に対して強調表示するための機能です。

    また、【ファイルの種類】ごとに強調表示を変更したい場合は [編集モード] の設定で強調文字列を登録していただくかたちとなります。

    [編集モード] はマーカー機能より設定がちょっと面倒ですが、ファイルの種類 (txt や html などの拡張子) ごとに強調文字列を保持することができます。

    …さて、文書 (ファイル) ごとに強調表示を変えたいとのことですが、文書ごとに強調表示を変えるとなるとテキストエディターでは難しいかと思います。

    テキストエディターは「プレーンテキスト形式」、つまり文字情報以外の装飾情報などのデータは一切含まないファイルを編集するためのソフトなので、ファイルの中に強調表示などの情報を保持することができません。

    新出単語やキーワードを次々に強調登録していって、次回、そのファイルを開いた時もその文字列を装飾した状態で開きたい、といった用途であれば「リッチテキスト形式」に対応したソフト、いわゆるワープロソフト (Word や一太郎、ワードパッドなど) が必要になると思います。

    Mery はテキストエディターですが、マーカー機能や強調表示などの機能がついているのであたかもワープロソフトのように使えてしまう部分もありますが、テキストエディターなのでそれ以上のことはできません。

    無理やり Mery でやるとしたら、例えば、新出単語のリストを別途テキストファイルに保存しておいて、文書を開いたら都度、そのリストを開いて [すべて選択] して右クリックからマーカーに登録するとか。

    …やはり、普通に [編集モード] で強調文字列の登録をしたほうが簡単かもしれませんね。

     |  Kuro  |  返信
  5. > こんばんは。Mery を開発している者です。
    >
    > yuko さん、サポートのご協力ありがとうございます。
    >
    > yuko さんがご回答くださっているとおり、マーカー機能をご活用いただくのがお手軽かと思います。
    >
    > ご指摘のとおり、マーカー機能は【すべての文書】に対して強調表示するための機能です。
    >
    > また、【ファイルの種類】ごとに強調表示を変更したい場合は [編集モード] の設定で強調文字列を登録していただくかたちとなります。



    > Mery はテキストエディターですが、マーカー機能や強調表示などの機能がついているのであたかもワープロソフトのように使えてしまう部分もありますが、テキストエディターなのでそれ以上のことはできません。
    >
    > 無理やり Mery でやるとしたら、例えば、新出単語のリストを別途テキストファイルに保存しておいて、文書を開いたら都度、そのリストを開いて [すべて選択] して右クリックからマーカーに登録するとか。
    >
    > …やはり、普通に [編集モード] で強調文字列の登録をしたほうが簡単かもしれませんね。

    マーカーに

    インポート&エクスポート
    グループ単位でのon/off

    等あったら
    ちょっと強調したいとかしたりするときに使い勝手がいいかな~
    と思ったりします。

     |  luna  |  返信
  6. 色々、ご検討頂き、ありがとうございます。
    例えば、下記のような指定はできないのでしょうか?

    同一の文章(ファイル)に於いて、
    (1) 1回目の検索(例:新型コロナウイルス)
    通常の検索のとおり、ヒットした文字列を強調表示する。

    (2) 2回目の検索(例:第1波)
    1回目の検索でヒット・強調した情報を保持したまま、
    2回目の検索でヒットした文字列に、新しい強調色を割り当てて強調表示する。

    (3) 3回目の検索(例:第2波)
    第1~2回目でヒット・強調した情報を保持したまま、
    3回目の検索でヒットした文字列に、新しい強調色を割り当てて強調表示する。

    (4) 以降、同様に繰り返す。(例:第3波、変異株、感染者数、病床数…)

    > > こんばんは。Mery を開発している者です。
    > >
    > > yuko さん、サポートのご協力ありがとうございます。
    > >
    > > yuko さんがご回答くださっているとおり、マーカー機能をご活用いただくのがお手軽かと思います。
    > >
    > > ご指摘のとおり、マーカー機能は【すべての文書】に対して強調表示するための機能です。
    > >
    > > また、【ファイルの種類】ごとに強調表示を変更したい場合は [編集モード] の設定で強調文字列を登録していただくかたちとなります。
    >
    > ≀
    > 略
    > ≀
    >
    > > Mery はテキストエディターですが、マーカー機能や強調表示などの機能がついているのであたかもワープロソフトのように使えてしまう部分もありますが、テキストエディターなのでそれ以上のことはできません。
    > >
    > > 無理やり Mery でやるとしたら、例えば、新出単語のリストを別途テキストファイルに保存しておいて、文書を開いたら都度、そのリストを開いて [すべて選択] して右クリックからマーカーに登録するとか。
    > >
    > > …やはり、普通に [編集モード] で強調文字列の登録をしたほうが簡単かもしれませんね。
    >
    >
    > マーカーに
    >
    > インポート&エクスポート
    > グループ単位でのon/off
    >
    > 等あったら
    > ちょっと強調したいとかしたりするときに使い勝手がいいかな~
    > と思ったりします。

     |  konnchan  |  返信
  7. > 例えば、下記のような指定はできないのでしょうか?

    残念ですが、できないと思います…。
    「複数の検索条件をそれぞれ別の色で強調表示する=複数の検索結果を保持し続ける」ということになりますが、検索結果は常に最新の1つのみしか保持しないからです。

    その状況を改善してくださったのが、マーカー機能ですね。マーカー機能なら複数の検索条件・結果を保持します。

    ただ察するに、「マーカー機能のようにMery全体で横断する検索条件ではなく、同一の文章(ファイル)内でのみ機能する複数の検索条件を保持したい」という要望のようですから、現状の仕組みでは難しいだろうと思います。

    やはりマーカー機能をどうにか使うしかないだろうということで、次善策として以下のようなマクロを書いてみましたが、これならどうでしょうか?

    ■機能概要:
    ファイルの1行目に定義したマーカー条件一覧をマーカーバーに一括登録します。

    ■使い方:
    1. 開いているファイル内の1行目に、マーカー検索条件を半角カンマ区切りで入力
     例: あああ,いいい,ううう
    2. 下記のマクロを実行する

    デメリットは、現状のマーカーバーの登録内容を一括クリアすることになる点ですが、それさえ許容できれば使いようがあるのではないかなと思います。

    Redraw = false;
    var sel = document.selection;
    
    var clearMarkerCommand = 2235;
    var addDelMarkerCommand = 2232;
    
    var currentPos = sel.GetActivePos();
    var scrY = ScrollY;
    
    sel.SetActivePos(0);
    sel.EndOfLine(true, mePosLogical);
    var lineText = sel.Text;
    
    if (lineText.length == 0) {
      sel.SetActivePos(currentPos);
      return;
    }
    
    editor.ExecuteCommandByID(clearMarkerCommand);
    
    if (lineText.indexOf(',') < 0) {
      editor.ExecuteCommandByID(addDelMarkerCommand);
      document.HighlightFind = false;
      sel.SetActivePos(currentPos);
      ScrollY = scrY;
      return;
    }
    
    var markerItems = lineText.split(',');
    var markerItemsLength = markerItems.length;
    var addedItems = new Set();
    for (var i = 0; i < markerItemsLength; i++) {
      if (markerItems[i].length == 0) {
        continue;
      }
      sel.SetActivePos(0);
      sel.Find(markerItems[i], meFindNext);
      if (!addedItems.has(sel.Text)) {
        editor.ExecuteCommandByID(addDelMarkerCommand);
      }
      addedItems.add(sel.Text);
    }
    
    document.HighlightFind = false;
    sel.SetActivePos(currentPos);
    ScrollY = scrY;
    
     |  yuko  |  返信
  8. 皆さんのご検討、アドバイスを戴きながら、「他のエディタ」ではどうなっているのか調べてみましたところ、「秀丸エディタ」が「この機能」を実現していることがわかりました。
    (対応マクロを2件、見つけました。下記参照)

    「秀丸」で対応・実現できるのであれば、「Mery」でも対応できるのではないかと思い、少しくどくなりますが、再度、ご検討をお願いする次第です。
    個人的には、愛用の「Mery」で実現できれば有難いと思っています。

    参考となる秀丸のマクロ

    1)【秀丸】【マクロ】単語色付け
    https://ameblo.jp/sakura-mille-feuille/entry-12053320126.html
    Parameter Hilight version 1.00

    2)秀丸:単語検索候補すべてに色付けマクロv0.03
    https://izoka.blog.fc2.com/blog-entry-104.html
    word_hilight_v003.mac

                           以上
    > > 例えば、下記のような指定はできないのでしょうか?
    >
    > 残念ですが、できないと思います…。
    > 「複数の検索条件をそれぞれ別の色で強調表示する=複数の検索結果を保持し続ける」ということになりますが、検索結果は常に最新の1つのみしか保持しないからです。
    >
    > その状況を改善してくださったのが、マーカー機能ですね。マーカー機能なら複数の検索条件・結果を保持します。
    >
    > ただ察するに、「マーカー機能のようにMery全体で横断する検索条件ではなく、同一の文章(ファイル)内でのみ機能する複数の検索条件を保持したい」という要望のようですから、現状の仕組みでは難しいだろうと思います。
    >
    > やはりマーカー機能をどうにか使うしかないだろうということで、次善策として以下のようなマクロを書いてみましたが、これならどうでしょうか?
    >
    > ■機能概要:
    > ファイルの1行目に定義したマーカー条件一覧をマーカーバーに一括登録します。
    >
    > ■使い方:
    > 1. 開いているファイル内の1行目に、マーカー検索条件を半角カンマ区切りで入力
    >  例: あああ,いいい,ううう
    > 2. 下記のマクロを実行する
    >
    > デメリットは、現状のマーカーバーの登録内容を一括クリアすることになる点ですが、それさえ許容できれば使いようがあるのではないかなと思います。
    >

     |  konnchan  |  返信
  9. 知らないことを教えてほしい、自分ではできないことを手伝ってほしい、
    というお願いのはずなのに…、

    別の有償エディタのマクロを「見て、学び、新しく作れ」というのは…、
    視線の方向が違います。

    幸いにも長く使えてきたのなら、いま提供されている機能をさらに十分に
    よく知り、できる限りの工夫してから、ここでの話が始まります。
    --------------------------------------------------------------------------------

    ツール
      オプション
        キーボード
          カテゴリ - 表示
            「マーカーに追加/削除」を選択
            ↓
            新しいキー
              F5 を押す
              ↓
              F5
              ↓
              **割り当て**
              ↓
              OK
    

    --------------------------------------------------------------------------------

    ※これで F5 を押すと…、「選択領域」または「カーソルがある語」 を 「マーカーに追加/削除」※


    **操作性** F3 で「次の検索」、F4 で「次のブックマーク」、F5 で「マーカーに追加/削除」

    右クリックのコンテキストメニューを使わなくても、1つのキーを押すだけなら…


    そしてこの F5 なら紛らわしくはないはず
    Shift+F5 は「日付と時刻」
    Ctrl+F5 未登録
    Alt+F5 未登録

    ご再考を

     |  虚  |  返信
  10. 私の拙い文章のため、また直線的な表現のため、意図せぬ方向に解釈され、ご厚意で対応してくれました皆様に不愉快な思いをさせていましたら、先ずもって、お詫びいたします。失礼いたしました。

    私の希望はただ一つ、愛用している「Mery」にこのような機能があるといいなぁ! 調べものをするときに便利だろうなぁ! と思ったものです。

    プログラミングの素養の無い後期高齢者の私には、到底、その開発は無理なので、Mery愛用者の何方か、知見をお持ちの方の力で、このような機能を実現して欲しいと期待したものですが、「他人の力を借りて」と安易に考えたのは少し軽率だったかもしれません。お詫びします。

    本件、お教えいただいた方法で対応させて頂きます。お教え、ありがとうございました。

    > 知らないことを教えてほしい、自分ではできないことを手伝ってほしい、
    > というお願いのはずなのに…、
    >
    > 別の有償エディタのマクロを「見て、学び、新しく作れ」というのは…、
    > 視線の方向が違います。
    >
    > 幸いにも長く使えてきたのなら、いま提供されている機能をさらに十分に
    > よく知り、できる限りの工夫してから、ここでの話が始まります。
    > --------------------------------------------------------------------------------
    >
    > --------------------------------------------------------------------------------
    > ↓
    > ※これで F5 を押すと…、「選択領域」または「カーソルがある語」 を 「マーカーに追加/削除」※
    >
    > ↓
    > **操作性** F3 で「次の検索」、F4 で「次のブックマーク」、F5 で「マーカーに追加/削除」
    > ↓
    > 右クリックのコンテキストメニューを使わなくても、1つのキーを押すだけなら…
    >
    > ↓
    > そしてこの F5 なら紛らわしくはないはず
    > Shift+F5 は「日付と時刻」
    > Ctrl+F5 未登録
    > Alt+F5 未登録
    >
    > ご再考を

     |  konnchan  |  返信
  11. konnchan 様

    こちらこそ、初見にも関わらず、常識の礼を失しましたことに深く
    お詫びを申し上げます。

    当初のお望みに対して「マーカー」のご提案がありましたが、それは
    固定的に使うもの、とのご見地から、即座に別の方法を強くお求めに
    なったことに、違和感を覚えました。

    じつは「マーカー」こそが、少ない手数で、柔軟に、複数の検索結果
    を強調して表示するために、まったく新しく開発された機能だと考え
    ていたからです。

    複数の検索結果を同時に表示する、ということは表示のみを残してい
    るのではなく、裏方では常に、複数の検索を実行し続けていることを
    意味します。テキストの文字が変化して強調の対象になると、すぐに
    そこが強調表示されることでわかります。

    いかに多くの結果を、速度の低下を抑えながら表示するか、には相当
    に作者様が苦心して技術力を投入してきた経緯があります。

    検索結果が誤ったときなど、すぐに取り消すことができる操作感も、
    重要です。マーカーはそれについても、追加と削除を同じ手順で実行
    できます。

    そして、マーカーバーを表示して常用すると、さらに、ドラッグ・
    ドロップによる登録や、逆にテキストへの貼り付け、などもできる
    操作の拡張性も用意されてします。

    また、表示だけではなく、マーカーは印字でき、語間の空白にすら色
    が続くリアルさがあります。

    もともと判読の際に、意識により残すためのマーカーなので、別の文
    を読むときには、何もないところから始めたいときと、前の文書から
    持ち越したいときが、どちらもあるはずです。
    「マーカーの設定」では、複数のマーカーを Ctrl や Shift で選択
    しての削除や ☑有効 の解除ができます。

    新規に複数の語(最長で行末まで)を登録する手順も簡単で、改行で
    並べた語を選択して、「マーカーの追加/削除」をすれば、それらを
    まとめて操作することができます。

    深く知り、習熟すれば、それだけの価値がある機能だと信じるから
    こそ、このような流れでのご案内となりました。ご理解とご容赦を
    いただけましたら幸いです。

    でもこれからは、腕自慢の皆さんが、ここできっと konnchan 様を
    存分に手助けしてくださると思います。どうぞまた新しいアイデア
    を得たときにはご紹介をお願いします。

     |  虚  |  返信
  12. こんばんは。Mery を開発している者です。

    今回、「他のエディタ」の例として挙げられている秀丸エディタさんは私も学生時代に愛用しておりまして非常に歴史の長いソフトですね。

    秀丸エディタさんは有料ソフトとしての機能も存分に搭載されているテキストエディターですから、同等の機能を…となるとフリーソフトの立場上、なかなか反応しづらいところではあります ^^;

    参考リンクとして貼っていただいた秀丸エディタさんのマクロですが、調べてみましたところ、どうやらマクロで実現しているわけではなく、秀丸エディタさんに搭載されている「すべて検索 - 色付け」という機能をマクロから呼び出しているだけのようです。

    この機能は秀丸エディタさんの [検索] ダイアログから [すべて検索] ボタンの [▼] をクリックすることで選択することができます。

    「すべて検索 - 色付け」は検索結果に色付けを行うための機能だとは思うのですが、その色付けは検索条件に対してではなく、まるでワープロソフトのように文字自体に対して色付けが行われているように見えます。

    つまり、「aaa」という文字列で「すべて検索 - 色付け」を行うと、現在表示されている文書内の「aaa」は色付けされますが、その後に「aaa」という文字を入力してもそこは色付けされません。

    例えば正規表現を使って「a.a」のような検索で色付けをしても同様、文字自体に色付けがされているようで、後から入力した文字がその条件に一致しても色付けはされることはありませんでした。

    しかも、その色付けされた「a.a」のような検索条件は編集が可能となっていて、後から条件を変更することもできるようです。

    ワープロソフトのように内部で文字ごとの色情報を持てるような仕組みが実装されているのもしれませんが、正直なところ技術的に想像もつかない状態でお手上げです。

    申し訳ございませんが現在の私の技術力では対応できそうにないので、どうしてもこの機能が必要ということであれば Mery でストレスを抱えるよりも秀丸エディタさんの購入をご検討いただくことをオススメします。

    ご意見は今後の開発の参考にさせていただきますね。

     |  Kuro  |  返信
  13. 今晩は!
    「こんな機能があるといいなぁ」という軽い気持ちから投稿させて頂きましたが、作者の方をはじめ多くの方にご検討戴き、貴重なご意見やご指導戴き、ありがとうございました。
    それにしても、プログラミングとは、奥が深いものなのですね!
    コードの長さ・大きさだけでなく、それが走る「プラットフォーム」(これらの表現が、正しいかどうか分かりません)のことを、よく理解していなければ、いけないことを初めて知りました。(言われてみれば、その通りだと理解できますが…)
    これまでは、その「プログラミング言語」さえ、理解・修得していれば、欲しい機能は実現できるものだと短絡的に考えていました。
    プログラム(コード)を書くことと、プログラムを設計することとは、きっと、全く別物だということなのでしょうね!
    最後に、Meryは素晴らしいエディタだと思います。これからも愛用させて戴きたく、益々、魅力的な作品になりますことをお祈りします。
    ありがとうございました。

    > こんばんは。Mery を開発している者です。
    >
    > 今回、「他のエディタ」の例として挙げられている秀丸エディタさんは私も学生時代に愛用しておりまして非常に歴史の長いソフトですね。
    >
    > 秀丸エディタさんは有料ソフトとしての機能も存分に搭載されているテキストエディターですから、同等の機能を…となるとフリーソフトの立場上、なかなか反応しづらいところではあります ^^;
    >
    > 参考リンクとして貼っていただいた秀丸エディタさんのマクロですが、調べてみましたところ、どうやらマクロで実現しているわけではなく、秀丸エディタさんに搭載されている「すべて検索 - 色付け」という機能をマクロから呼び出しているだけのようです。
    >
    > この機能は秀丸エディタさんの [検索] ダイアログから [すべて検索] ボタンの [▼] をクリックすることで選択することができます。
    >
    > 「すべて検索 - 色付け」は検索結果に色付けを行うための機能だとは思うのですが、その色付けは検索条件に対してではなく、まるでワープロソフトのように文字自体に対して色付けが行われているように見えます。
    >
    > つまり、「aaa」という文字列で「すべて検索 - 色付け」を行うと、現在表示されている文書内の「aaa」は色付けされますが、その後に「aaa」という文字を入力してもそこは色付けされません。
    >
    > 例えば正規表現を使って「a.a」のような検索で色付けをしても同様、文字自体に色付けがされているようで、後から入力した文字がその条件に一致しても色付けはされることはありませんでした。
    >
    > しかも、その色付けされた「a.a」のような検索条件は編集が可能となっていて、後から条件を変更することもできるようです。
    >
    > ワープロソフトのように内部で文字ごとの色情報を持てるような仕組みが実装されているのもしれませんが、正直なところ技術的に想像もつかない状態でお手上げです。
    >
    > 申し訳ございませんが現在の私の技術力では対応できそうにないので、どうしてもこの機能が必要ということであれば Mery でストレスを抱えるよりも秀丸エディタさんの購入をご検討いただくことをオススメします。
    >
    > ご意見は今後の開発の参考にさせていただきますね。

     |  konnchan  |  返信
スポンサーリンク