1 件の投稿を表示中 (合計 7 個)
  • 作成者
    投稿
  • #9806
    kazm
    参加者

    ver.10からファイル比較がdiffから基本メニューとなり,高機能になりました.
    この比較メニューからdiffの時にあったような,異なる行だけ抜き出したリストを出力できますでしょうか?
    diffではそのリストをダブルクリックすると該当行へジャンプしたと思いますが,そのようなことがしたいです.

    また,比較オプションの品質の意味がよくわかりません.
    厳密なファイル比較を5としたとき,何かの違いを無視していくと概略の1となると思いますが,1~4は「何を」比較から外しているのか,明確に知りたいです.

    よろしくお願いします.

    #9807
    Yutaka Emura
    キーマスター

    kazm 様

    いつも EmEditor Professional をお使いいただき、誠にありがとうございます。

    残念ながら、異なる行だけ抜き出したリストを出力ということはできません。申し訳ありません。

    比較オプションの品質については、比較する際に、どの程度、行の先読みを行なうか、また、どの程度、深くスキャンを行なうかという違いがあります。

    まず、先読みする行数について説明します。

    A.txt





    B.txt



    という 2 個のファイルを比較するとすると、A.txt は、先頭から 2 行先読みしないと B.txt と一致しません。この、どれほどの行をスキップして比較するかを指定する行数になります。

    次に、スキャンの深さについて説明します。

    C.txt





    D.txt



    の 2 個のファイルを比較するとします。C.txt と D.txt の先頭行は、どちらも「あ」なので一致します。そこで、深さが 1 行の場合は、最初の 1 行が同じという結果になってしまいます。でも、深さが 3 の場合は、C.txt の 1 行目は一致せず、3 行目から一致するようになります。

    実際には、もっと複雑なことを行なっていますが、簡単に書くと以上のようになります。

    品質の 1 から 5 の違いというのは、上記のスキップや深さの程度の違いを指定することになります。現在のバージョンでは、次のようになっています。

    品質 スキップ行数 深さの行数
    1 200 1
    2 1000 3
    3 2000 5
    4 20000 7
    5 300000 10

    将来のバージョンでは、これらの数字やアルゴリズムなども、改善のため仕様が変わる可能性がありますので、ご了承ください。

    他にも何かご質問がございましたら、ご遠慮なくご発言ください。
    今後もよろしくお願い申し上げます。

    #9808
    kazm
    参加者

    いつも迅速なご対応ありがとうございます.

    比較オプションの品質について大変よくわかりました.
    かなり難しいことをされているのですね.
    私の使い方であればさほど大きなブロック単位の違いは必要ありませんので,デフォルトの3程度で問題ないことがわかりました.

    異なる行の抽出リストでなくても,全体的に異なる行がどのくらいあるか確認する方法はないでしょうか.
    小さなファイルであればそうでもないのですが,大きなファイルで全体的な違いを把握するときに,diffの異なる行だけ表示する機能は大変役立ってましたので.
    違うソフトで申し訳ありませんが,Rekisaというフリーソフトがあります.
    http://frozenlib.net/rekisa/
    このような全体的な確認ができることをイメージしています.

    一度ご検討していただければ幸いです.
    よろしくお願いします.

    #9809
    Yutaka Emura
    キーマスター

    kazm 様

    いつも EmEditor Professional をお使いいただき、誠にありがとうございます。

    比較オプションの品質についてご理解いただき、ありがとうございます。

    異なる行を数える方法ですが、[次の変更] コマンド (ショートカット キー F7) を選択すると、次の変更箇所にジャンプするようになります。このショートカット キーを何度も繰り返して押して、何回押すと文末に到達するかを数えるという方法があるかと思います。これをマクロで実行すれば、自動的にカウントすることも可能です。[次の変更] コマンドは、正確には、行数ではなく、変更のあった「まとまり」ごとに数えます。つまり、連続する 3 行が変更されていたとすると、その 3 行を 1 つとカウントします。[次の変更] でなく [次の変更行] コマンドを使用すると、行数を数えてくれます。ただし、[次の変更行] コマンドは、既定ではショートカットが割り当てられていないため、キーボード マップで割り当てると便利かと思います。

    将来的には、ご要望のような全体的な確認が取れる方向に向かうとおもいますが、比較専用のソフトではないので、全体のバランスを考えて開発していきたいと考えています。ということで、現在のところ将来の検討事項ということでご理解いただければ幸いです。

    他にも何かご質問がございましたら、ご遠慮なくご発言ください。
    今後もよろしくお願い申し上げます。

    #9812
    kazm
    参加者

    ご返信ありがとうございます.

    詳しい操作方法を教えていただきありがとうございました.
    やはり現状ではマクロでの対応が現実的ですね.了解しました.

    将来的には、ご要望のような全体的な確認が取れる方向に向かうとおもいますが、比較専用のソフトではないので、全体のバランスを考えて開発していきたいと考えています。ということで、現在のところ将来の検討事項ということでご理解いただければ幸いです。

    Yutakaさんのお考えがわかりました.確かに,他の機能との連携もあるでしょうし,すべての機能をEmEditorに求めるのは現実的ではないですね.開発する側にとっては当然のことだと思います.

    ただ,これは,前のバージョンではdiffプラグインでできていたことが,バージョンアップでできなくなった機能です.機能のバランス的か,技術的に厳しいところがあったからだと思いますが,そのような機能については代替策をとって頂きたかったです.(公開マクロで対応など)

    EmEditorは安価で使いやすく,とても気に入っています.
    開発の方,がんばってください.

    #9814
    Yutaka Emura
    キーマスター

    kazm 様

    いつも EmEditor Professional をお使いいただき、誠にありがとうございます。

    マクロでよろしければ、次のマクロを作成しました。これを実行すると、相違のある行数をカウントして表示します。

    document.selection.StartOfDocument();
    y = document.selection.GetActivePointY( eePosLogical );
    y0 = y;
    for( i = 0; i < 1000000; i++ ){
    editor.ExecuteCommandByID(4557);
    y = document.selection.GetActivePointY( eePosLogical );
    if( y == y0 ){
    alert( i );
    break;
    }
    y0 = y;
    }

    ファイル拡張子が .jsee の任意のファイルで保存してお使いください。

    他にも何かご質問がございましたら、ご遠慮なくご発言ください。
    今後もよろしくお願い申し上げます。

    #9817
    kazm
    参加者

    ありがとうございました!!
    マクロ使わせていただきます.

1 件の投稿を表示中 (合計 7 個)
  • このトピックに返信するにはログインしてください。