PhpStorm の diff ビューの「空白を無視」は機能します。キャリッジ リターン / EOL / newline / what-have-you の違いを自動的に無視します。難解な Unix コマンドなどをいじって時間を無駄にすることも、実際に機能するものを手に入れて人生を前進させることもできます。
はい、私の改行は \r ですが、それで何ですか? あっ!ソフトウェアが愚かすぎて \r == \n と認識できない場合は、十分にスマートな別のソフトウェアを使用するだけです。
PhpStorm は、「正常に機能した」差分ツールを備えた唯一のソフトウェアでした。これは、Mac ソフトウェアに期待することです。私は、Mac ソフトウェアが正常に動作することを期待しています。私は Mac を使用しているので、難解な端末コマンドを毎回学習する代わりに自分の仕事をすることができます。これらは、ほとんどすべて文書化が不十分であり、コマンドがどのようにフォーマットされるべきかを明確な例なしで理解することを期待しているため、わかりません。やり方が間違っている場合、または他のすべての悪いソフトウェアと同じようにコマンドが単に機能しない場合。
「man diff」からこの例を取り上げます。
-I RE --ignore-matching-lines=RE
Ignore changes whose lines all match RE.
さて、これを読んでも意味がわかりません。その使用例はありません。「RE」とは?どこにも言いません。
次に、この宝石があります:
--GTYPE-group-format=GFMT
Similar, but format GTYPE input groups with GFMT.
--line-format=LFMT
Similar, but format all input lines with LFMT.
--LTYPE-line-format=LFMT
Similar, but format LTYPE input lines with LFMT.
LTYPE is `old', `new', or `unchanged'.
GTYPE is LTYPE or `changed'.
GFMT may contain:
%< lines from FILE1
%> lines from FILE2
%= lines common to FILE1 and FILE2
%[-][WIDTH][.[PREC]]{doxX}LETTER
printf-style spec for LETTER
LETTERs are as follows for new group, lower case for old group:
F first line number
L last line number
N number of lines = L-F+1
E F-1
M L+1
LFMT may contain:
%L contents of line
%l contents of line, excluding any trailing newline
%[-][WIDTH][.[PREC]]{doxX}n
printf-style spec for input line number
Either GFMT or LFMT may contain:
%% %
%c'C' the single character C
%c'\OOO'
the character with octal code OOO
私はこの一節の意味をまったく理解できませんでした。「入力」とは何ですか?両方のファイルですか、それとも「to」ファイルだけですか、それとも「from」ファイルだけですか? 「似ている」とは何を指しているのですか?「GFMT は「LTYPE である」または「変更された」という文の「である」とはどういう意味ですか? 「置き換えられるかもしれない」という意味ですか?もしそうなら、引用符や括弧などで「GFMT」を使用しないのはなぜですか? 例が与えられていないので、知る方法はありません。ドキュメントの文言は完全にあいまいです。"GFMT may contain"... とはどういう意味ですか? 「含む」とは、頭字語 GFMT を置き換えるテキストにそれが含まれる可能性があることを意味しますか? 明確な例がなければ、まったく役に立ちません。
基本的に、ソフトウェアの使い方をまだ知らない人にとっては役に立たないほど不可解で曖昧なものにするつもりなら、わざわざマニュアルページを書く必要があるでしょうか? その時点で、それはマニュアルではありません。これは、ソフトウェアを作成した人が使用方法を思い出せるようにするためのクイック リファレンス ページです。彼らは、ソースコードが実際に何をするのか知りたければ、ソースコード自体を読むだけだと思っていると思います。
私の時間は貴重です。実際に正しく動作し、適切なドキュメントを備えたソフトウェアを手に入れるためにお金を払うだけです。
これらはすべて失敗したため:
diff -d --strip-trailing-cr --ignore-all-space --from-file=rest.phtml test.phtml
...\r 文字を無視できませんでした。
diff -wd --strip-trailing-cr --ignore-all-space --from-file=rest.phtml test.phtml
...\r 文字を無視できませんでした。
diff -wd --suppress-common-lines --strip-trailing-cr --ignore-all-space --from-file=rest.phtml test.phtml
...\r 文字を無視できませんでした。
diff -wd test.phtml rest.phtml --suppress-common-lines --strip-trailing-cr --ignore-all-space
...\r 文字を無視できませんでした。
diff -awd test.phtml rest.phtml --suppress-common-lines --strip-trailing-cr --ignore-all-space
...\r 文字を無視できませんでした。
さらに言えば、それらが \n 文字である場合、 \n 文字が追加されたときにも失敗しました。
どこで test.phtml ==
ふー
バー
そしてrest.html ==
フーバー
「diff」コマンドは、常に次のような結果をもたらします。
*** 1,2 **** ! ふー!bar \ ファイルの最後に改行なし
--- 1 ---- ! foobar \ ファイルの最後に改行はありません
... 不合格!