1

人間の言語のテキスト (中国語) で単語ごとの差分を取得するにはどうすればよいですか?

git リポジトリに中国語のプレーン テキストがいくつかあります。テキストが編集されたので、追加/削除された単語を確認したい. ファイルの 1 行はテキストの段落全体を表すため、単純な git diff では不十分です。特定の数の段落で何かが変更されたことはわかっていますが、その中でどの文/単語が変更されたかはわかりません。

さらに悪いことに、私が言ったように、テキストは中国語です。英語やその他の印欧語とは異なり、中国語では単語の区切り記号としてスペースを使用しません。段落全体は、中国語の句読点とともに、スペースを含まない統一されたブロックになります。したがって、 git diff --word-diff はまったく役に立ちません。

そのような中国語のテキストの 2 つのバージョン間の人間が読める差分を作成する方法はありますか? 各文字の --word-diff に相当するものはありますか?

4

3 に答える 3

1

これを自分の質問への回答として投稿しますが、ソリューションの一部、正しい方向へのポインターのみが含まれています。まだ何かが足りない。

統合差分ファイルで文字ごとの違いを視覚化するにはどうすればよいですか?から 次のいずれかのコマンドを試してください。

git diff --word-diff-regex=. 
git diff --color-words=.  

上記の 2 つのコマンドのいずれかを実行すると、非常に近くなります。ただし、2つの問題があります。上記のコマンドを単純に入力してコンソールの出力を見ると、各段落の先頭しか表示されません。行全体がコンソールに収まらず、git は末尾 (つまり、ほとんど!) を切り捨てます。

または、ファイルにリダイレクトしようとすると:

git diff --color-words=. > diff.patch

次にvimを使用してファイルを表示すると、人間が読めるコードというよりもバイナリコードのように見えるごちゃごちゃした混乱が得られます。

更新:
私は最終的にこのソリューションを使用しました:

wget https://git.kernel.org/cgit/git/git.git/plain/contrib/diff-highlight/diff-highlight --no-check-certificate 
chmod u+x diff-highlight
git diff --color=always | ./diff-highlight | less -R  
于 2014-10-01T06:21:02.537 に答える
0

単語ごとにdiff、あなた自身の答えとして機能するはずです。docから、--word-diff-regexとの関係--color-wordsは次のとおりです。

--color-words[=<regex>
  Equivalent to --word-diff=color plus (if a regex was specified) --word-diff-regex=<regex>.

実際には、word-diffモードをに設定して、コンソールporcelainの出力を見やすくすることができます。diff

git diff --word-diff-regex=. --word-diff=porcelain

また、出力をファイルにリダイレクトするには、--color-words(デフォルト--word-diffではcolor) を使用しないでください。生成されたテキスト ファイルは、何らかの方法でエンコードされた色情報git diffを、ごちゃごちゃになったものとして認識できないためです。をそのまま使用できます。--word-diff-regex=.デフォルトの--word-diffモードはplainです。

git diff --word-diff-regex=. > diff.patch
于 2014-10-01T07:29:39.053 に答える