LoginSignup
Applekdz
@Applekdz

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

EmEditor Professionalでは、全置換はどのようにすれば可能でしょうか?

EmEditor Professionalでは、全置換はどのようにすれば可能でしょうか?

お世話になっております。
さくさくエディタのように、全部を一発で置換する方法です。
http://vivi.dyndns.org/sse/

連続置換のように上から順番にやるのではなく、すべて候補の置換を一発でやる全置換です。
1万個くらいならたいした時間ではないですが、変換候補が100万個を超えると時間がかかります。

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

追記です。2021年12月22日
上から順番に置換する方法ではなく、全部を一括する方法についての質問になります。
通常のすべて置換は、上の候補から置換するので下の候補は、前に置換された結果に影響されて順次置換されます。
"全置換"は、その全置換候補にあるものは、順次置換と違って影響されずに置換される方法の違いと認識しています。
既にEmEditor Professionalで実現していて言葉の違いだけになって私が勘違いしている可能性はあります。

0

4Answer

EmEditor v21.6.903 以上では、[連続置換] ダイアログ ボックスに [すべて複数置換] ボタンが追加されました。これを使用すれば、ご希望の一括置換の動作になります。

マクロを使用する場合には、次のように eeExReplaceMulti フラグを使用ください。さらに、リンク ファイルを使用するのが便利です。リンク ファイルには、Tab で区切られた検索文字列と置換後文字列のペアを改行で区切って複数個指定できます。

batch_list = editor.filters;
batch_list.AddReplace("E:\\Test\\LinkFile.txt", "", eeFindReplaceCase, eeExFindLinkFile );
document.selection.BatchReplace(batch_list, eeReplaceAll, eeExReplaceMulti);

リンク ファイル (上記サンプルの E:\Test\LinkFile.txt) の中身の例 (UTF-8 または UTF-16 で保存してください、\t は Tab を表します)

検索文字列1\t置換文字列1
検索文字列2\t置換文字列2
...\t...

ただし、現在のところ、この「すべて複数置換」が利用できる条件は、正規表現や数値範囲でなく、検索文字列に改行を含まない単純な場合に限ります。

3

Comments

  1. @Applekdz

    Questioner
    バージョンアップしていただき、ありがとうございます。
    御厚意、感謝しております。

Comments

  1. @Applekdz

    Questioner
    ありがとうございます。
    すべて置換のことが全置換という意味と同じでしたでしょうか?
    よろしくお願いいたします。
  2. @Applekdz

    Questioner
    ありがとうございます。
    追記しました。
    よろしくお願いいたします。

Comments

  1. @Applekdz

    Questioner
    ありがとうございます。
    その"一括置換(連続置換ではなく一括置換)を行いたい"という質問は私の投稿ではないです。
    もしかしたら、同様のニーズが多数あるのではないでしょうか?

    さくさくエディタで書かれている、全置換とEmEditor Professionalの連続置換は異なる動作でしょうか?
    それとも呼び方の違いだけでおなじことでしょうか?
    よろしくお願いいたします。
  2. 他のエディタとの違いについてはわかりかねますが、一括置換については将来的に検討いたします。
  3. @Applekdz

    Questioner
    バージョンアップ検討ありがとうございます。
    私はまだEmEditor Professionalの置換は極めれてないので呼び方の違いなのか、把握できてませんが、一度、世界最速の全置換処理というものと違いを確認して頂けますでしょうか?
    よろしくお願いいたします。

    引用
    http://vivi.dyndns.org/sse/
    ※ もし「さくさくエディタ」よりも全置換処理が高速なテキストエディタをご存知であれば、お知らせください。 機能を削ってでも、世界最速になるようにしたいと考えています。
  4. さくさくエディタのサイトを拝読してみました。さくさくエディタの全置換というのは、単に EmEditorでいう通常の置換ダイアログにある「すべて置換」に相当し、EmEditorの「連続置換」とはまったく意味が異なると思います。また、全置換処理時間計測結果が掲載されていますが、このテストで使用されている EmEditor は v13.0.4 と非常に古いバージョンであり、現在では、当時よりも数倍以上に速く動作します。

    参考までに、[全置換処理時間計測結果](http://vivi.dyndns.org/sse/replaceAll.html) とマシンスペックを除き同じテスト方法で試してみました結果、EmEditor (64ビット版) v21.4.0 だと、100万行の全置換は 0.516 秒、その Undo は 0.969 秒となりました。さくさくエディタ (64ビット版) v0.6.058 Dev では、同じく 100万行の全置換で 1.349 秒、その Undo 0.921 秒となりました (Windows 11、Core i9-11900K、64GB RAM、2TB SSD)。

    結論として、両者の最新版では、Undo では、さくさくエディタの方が 1.05 倍に速くなりましたが、100万行の置換では EmEditor の方が 2.61 倍に速くなりました。

    さくさくエディタの作者様には、最新のバージョンで再計測していただくことを望みます。
  5. @Applekdz

    Questioner
    検証していただきありがとうございます。御厚意、感謝しております。
    さくさくエディタは呼び方の違いに過ぎないとわかりました。
    今回の希望の主旨である並びの順番に関係なく置換する一括置換の機能は是非バージョンアップでお願いしたいです。
    これはリンクの質問で他の人も希望されていた上から順ではない置換方法です。
    よろしくお願いいたします。
  6. @Applekdz

    Questioner
    EmEditor v21.4.0の説明見ました。curlコマンドは、使えるようになりませんでしょうか?

百万個レベルのテキスト置換をなるべく短時間で行いたいのであれば、テキストエディタではなくテキスト処理に特化したコマンドラインツールを使うことも検討した方がいいかもしれません。

1

Comments

  1. @Applekdz

    Questioner
    回答ありがとうございます。
    それは事例として、具体的になんというツールがありますでしょうか?
    よろしくお願いいたします。
  2. sedなどを想定していましたが、正規表現などを使わない単純な文字列置換ならバッチファイルでもいけるようです。
    https://knowledge.reontosanta.com/archives/816

    基本的に元のテキストファイルとは別に「変換後テキストファイル」を作る形になりますが、ファイル全体を読み込んでから置換するのではなく行単位でテキストを読み込んで順次出力するためメモリをほとんど消費せず、所要時間のほとんどはファイルアクセスが占めるため巨大なファイルになるほどテキストエディタより効率的に置換することを期待できると思います。
  3. @Applekdz

    Questioner
    ありがとうございます。勉強になりました。

Your answer might help someone💌