#30974
Applek
参加者

ご回答ありがとうございます。
リンクファイルタブ区切りだと440万候補が2秒くらいで置換できてます。ありがとうございます。
〝競合する候補があるときは長い方を優先する〟という機能を付けてもらいたいです。

そうしないと長い候補からリンクファイルを分離して作らないといけないので、メンテがかなりの負担になります。
一旦document.selection.BatchReplace(batch_list,eeReplaceAll,eeExFindRegexOnigmo | eeExFindMulti);とかで閉じるだけで別の書き方に変えれる混在書きができるようにしたいのです。

以下のようにマクロのファイルだけで普通の置換のときのように作れましたら、
一旦、document.selection.BatchReplace(batch_list,eeReplaceAll,eeExFindRegexOnigmo | eeExFindMulti);で閉じるということをやって区切れば、優先順位が付けられて、いけますが、リンクでないと動作しないとなると、いちいち複数ファイルで管理していかないといけなくなりますので実用的ではないです。
一発つくればメンテ不要の場合だと今のEmEditorのやり方でもできますが、たいていは、使う度にメンテします。

莫大な候補をひとつのマクロファイルで書いてやるより、かなり手間がかかります。
このようなメンテナンス上の難になる理由があるためにひとつのファイルにbatch_list.AddReplace(“”,””,eeFindReplaceRegExp | eeFindReplaceCase,0);この形式で従来通りに一括置換も書きたいのです。

>その通りです。[単語のみ検索する]、その他のオプションが設定されていない場合、長い方の文字列は無視されます。

これは一旦document.selection.BatchReplace(batch_list,eeReplaceAll,eeExFindRegexOnigmo | eeExFindMulti);で閉じて区切れば解決しますので、マクロファイルに直接書く必要があります。

このやり方で少ない項目(7万行くらい)だとこれで普通に動作して閉じるだけで混在書きもできて通常動作していますがマクロが数百万候補になると砂時計のまま止まります。
通常の書き方と同じように一瞬で動いてもらいたいです。
通常の従来の書き方でひとつのファイルで管理できるほうがメンテがラクです。

一括同じリンクファイルで長いほうか短いほうを優先されるかは選択できるようになりませんでしょうか?

以下のような書き方でも動作はしていますので砂時計待ちがなくなるだけでいけます。

batch_list = editor.filters;
batch_list.AddReplace(“あおもり”,”青森”,eeFindReplaceRegExp | eeFindReplaceCase,0);
document.selection.BatchReplace(batch_list,eeReplaceAll,eeExFindRegexOnigmo | eeExFindMulti);

このような書き方で大量に書いた場合にマクロが砂時計になって止まるというメールでsampleで送らせて頂きました問題は解決しますでしょうか?

大量の候補があるのは、eeExFindMultiでない使い方もあるためです。

リンクだと個々の単語にメンテをしたくなったときの手間が増えます。
途中の行から通常のdocument.selection.BatchReplace(batch_list,eeReplaceAll,eeExFindRegexOnigmo);を混在した書き方も出来ないですが、ひとつのマクロファイルだけで可能なら区切るだけで混在した書き方のメンテナンスができます。
そのような理由のためリンクファイルにしなくても速く動くように御願いしたいのです。
メールで送らせて頂いた書き方で、砂時計待ちにならないようになれば使えます。

よろしくお願いいたします。