통합 diff 파일에서 문자 별 차이를 시각화하려면 어떻게해야합니까? 다른 무료 소프트웨어)을 아는 사람이

내가 만든 패치를 얻을 말 git format-patch. 이 파일은 기본적으로 일부 메타 데이터가 포함 된 통합 diff입니다. Vim에서 파일을 열면 어떤 줄이 수정되었는지 볼 수 있지만 변경된 줄에서 어떤 문자 가 다른 지는 볼 수 없습니다 . 문자 별 차이를 시각화하는 방법 (Vim 또는 Ubuntu에서 실행되는 다른 무료 소프트웨어)을 아는 사람이 있습니까?

문자 별 차이가 시각화되는 카운터 예는 vimdiff a b.

업데이트 금요일 11 월 12 일 22:36:23 UTC 2010

diffpatch는 단일 파일로 작업하는 시나리오에 유용 합니다.

업데이트 2016 년 6 월 16 일 목요일 17:56:10 UTC

git 2.9에서 diff-highlight를 확인하십시오 . 이 스크립트는 내가 원래 찾고 있던 것을 정확히 수행 합니다 .



답변

질문에서 Vim에 대한 언급을 감안할 때 이것이 원하는 대답인지 확실하지 않지만 Emacs는 이것을 할 수 있습니다. 은 diff가 포함 된 파일을 열고, 당신이에있어 있는지 확인 diff-mode(파일 이름이 지정되어있는 경우 foo.diff또는 foo.patch그렇지 않으면 입력이 자동으로 발생 M-x diff-mode RET, 당신은에 관심과 충돌하는 덩어리로 이동) C-c C-b를 위해 refine-hunk. 또는 파일을 한 번에 하나씩 M-n; 자동으로 정제됩니다.


답변

git에서는 커밋하지 않고 병합 할 수 있습니다. 먼저 패치를 병합 한 후 다음을 수행하십시오.

git diff --word-diff-regex=.

등호 뒤에있는 점에 유의하십시오.


답변

다음은보다 시끄러운 출력이 git diff --word-diff-regex=<re>적고 입력이 덜 필요하지만 git diff --color-words --word-diff-regex=<re>.

단순 (공간 변경 강조 표시) :

git diff --color-words

단순 (개별 문자 변경 사항을 강조 표시하고 공간 변경 사항은 강조 표시하지 않음) :

git diff --color-words=.

더 복잡함 (공간 변경 강조 표시) :

git diff --color-words='[^[:space:]]|([[:alnum:]]|UTF_8_GUARD)+'

일반적으로 :

git diff --color-words=<re>

<re>변경을 식별 할 목적으로 “단어”를 정의하는 정규 표현식은 어디에 있습니까 ?

이들은 변경된 “단어”에 색상을 지정한다는 점에서 덜 시끄 럽습니다. 반면 --word-diff-regex=<re>일치하는 “단어”를 색상 -/+마커로 둘러싸기만하면 됩니다.


답변

git diff --color-words="[^[:space:]]|([[:alnum:]]|UTF_8_GUARD)+"

위의 정규식 ( Thomas Rast )은 구두점 / 문자 수준에서 diff 조각을 분리하는 적절한 작업을 수행 --word-diff-regex=.합니다.

여기에 결과 출력의 스크린 샷을 게시했습니다 .


최신 정보:

이 기사 에는 몇 가지 훌륭한 제안이 있습니다. 특히, contrib/git repo 의 트리에는 diff-highlight세분화 된 하이라이트를 보여주는 perl 스크립트가 있습니다.

사용을위한 빠른 시작 :

$ curl https://git.kernel.org/cgit/git/git.git/plain/contrib/diff-highlight/diff-highlight > diff-highlight
$ chmod u+x diff-highlight
$ git diff --color=always HEAD~10 | diff-highlight | less -R


답변

NodeJS 설치에 반대하는 것이 없다면 “diff-so-fancy”( https://github.com/so-fancy/diff-so-fancy ) 라는 패키지 가 있습니다. 이것은 설치가 매우 쉽고 완벽하게 작동합니다.

npm install -g diff-so-fancy
git diff --color | diff-so-fancy | less -R

편집 : 실제로 공식 diff-highlight의 래퍼라는 것을 알았습니다.


답변

문자 별 차이 도구는 모르지만 단어 별 차이 도구 인 wdiff가 있습니다.

예를 참조 DIFF, Colordiff, Wdiff, Vimdiff – UNIX / Linux에서 최고 4 파일 차이 도구 .


답변

약간의 조사 끝에 최근 Vim 메일 링리스트에이 질문이 두 번 올라 왔다는 것을 알게되었습니다. NrrwRgn 플러그인 언급 한 (두 개의 좁은 지역을 그들을 차이). Christian Brabandt가 설명한대로 NrrwRgn을 사용하는 것은 해결책 이라기보다는 해결 방법처럼 느껴지지만, 그것만으로도 충분할 것입니다.

나는 NrrwRgn을 사용해 보았고 : diffthis와 함께 단일 파일의 일부 내에서 문자 별 차이를 설명하는 데 실제로 유용했습니다. 그러나 많은 키 입력이 필요했습니다. 내 Vimscript는 꽤 녹슬었지만 스크립트로 작성 될 수 있습니다. 원하는 기능을 제공하도록 NrrwRgn을 향상시킬 수 있습니다.

생각?