vimdiff에는 시작이나 끝에서 공통 문자를 공유한다는 이유만으로 거의 완전히 다른 두 줄을 같은 부분의 다른 줄로 표시하는 성가신 습관이 있습니다.
예를 들어:
foo.txt
포함: The quick brown fox jumps over the lazy dog
. 포함 bar.txt
: This is a completely different line
.
vimdiff foo.txt bar.txt
Th
시작 부분의 강조 표시를 제외한 모든 항목 과 함께 이 두 줄을 나란히 표시합니다 .
이 동작을 비활성화하고 다른 줄을 다른 줄로 표시하는 방법이 있습니까?
답변1
예, 가능합니다. 명령을 입력하다
:hi! link DiffChange DiffText
답변2
아니요, 이는 외부 비교 도구에 의해 보고된 줄 변경 사항을 더 세분화하기 위한 Vim 내부 알고리즘의 일부입니다.
옵션을 통해 영향을 받을 수 있다면 좋겠지만 현재는 그렇지 않습니다. Vim의 소스 코드를 수정하고 자신만의 특별 버전을 컴파일해야 합니다. 패치를 작성하여 제출하세요.vim_dev 메일링 리스트? !
답변3
나는 그것이 "diff" 명령의 출력에 달려 있다고 생각한다.
":help diff-options"를 실행하면 Vim이 기대하는 diff 형식의 예를 볼 수 있습니다:
1a2
> bbb
4d4
< 111
7c7
< GGG
---
> ggg
The "1a2" item appends the line "bbb".
The "4d4" item deletes the line "111".
The '7c7" item replaces the line "GGG" with "ggg".
대체 항목(예: 7c7)의 경우 vimdiff가 이를 나란히 배치하고 hl-DiffChange로 색상을 지정하고(예: 기본 설정에서는 보라색) hl-DiffText를 통해 줄의 다른 텍스트를 강조 표시할 것이라고 생각했습니다(예: 내 기본값은 빨간색입니다) ).
예를 들어, 다음 두 파일을 vimdiff하면:
파일 1:
This is common1
This is common2
11111111111111122222222222222222222222222222222222222
This is common4
This is common5
파일 2:
This is common1
This is common2
This is a completely different line
This is common4
This is common5
두 파일의 세 번째 줄이 완전히 다르더라도 vimdiff는 여전히 두 파일을 나란히 배치합니다.
해키적인 해결책은 원하는 형식을 생성하도록 수정된 외부 diff 프로그램을 사용하는 것일 수 있습니다.