한 줄 내에서 더 자세한 비교


17

vimdiff파일 간의 차이점을 검사 하는 데 사용 하고 때로는 누락되는 경우가 있습니다. 예를 들어 다음 두 파일이있는 경우

//a.c
printf("Hello\n");

과:

//b.c
int i = printf("hello\n") + 3;

그들을 보여 vimdiff줍니다 :

여기에 이미지 설명을 입력하십시오

내가보고 싶은 것은 BC에서 h대문자로 표시되지 않는다는 것입니다.

(내 말은, 무시 (즉 라인) 비교하는 그것의 한 부분을 vimdiff 알 수있는 방법이 int i =과를 + 3)?


4
diffchar의 플러그인은 내가 제로 경험이 당신이 필요하지만, 아마도. 어쩌면 그것을 사용 한 경험이있는 사람은 좋고 상세한 답변을 줄 수 있습니다 (또는 대안).
— tokoyami

답변:


15

나는 이것이 Vim 자체에 의해 이루어질 수 있다고 생각하지 않습니다. 에서 :h view-diffs(강조 광산) :

hl-DiffText DiffText 변경된 줄 내부에서 변경된 텍스트입니다.  정력
                                다른 첫 번째 문자를 찾고
                                다른 마지막 캐릭터
                                (줄 끝에서 검색).   그만큼
                                사이에있는 텍스트가 강조 표시됩니다.  이것은 의미
                                여전히 중간에있는 부분들
                                어쨌든 동일하게 강조 표시됩니다.   "iwhite"만
                                여기에 'diffopt'가 사용됩니다.

Tokoyami의 제안 은 한 걸음 더 가까이 다가갑니다. 설치 diffchar( Github의 링크 플러그인 자동 로더를 사용하는 경우). 플러그인이 활성화 된 v4.7부터 Vim은 더 정확한 차이점을 자동으로 표시합니다.

여기에 이미지 설명을 입력하십시오

  • F7(기본 키맵)을 눌러 일반 플러그인과 플러그인간에 전환 할 수 있습니다 . 다음으로 재 할당 :

    nmap <silent> <key> <Plug>ToggleDiffCharAllLines
    

    <key>적절한 키 코드로 교체하십시오 .

  • 더 많은 색상을 사용할 수 있습니다 :

    let g:DiffColors=100
    

+1이지만 "한 걸음 더 가까워졌다"는 것은 나에게 너무 보수적 인 것 같습니다. Diffchar 는이 문제 IMO를 완전히 해결합니다.
— Sparhawk

@Sparhawk 글쎄, 그것은 라인의 공통 요소를 무시하지 않습니다 (OP는 변경 사항을 강조 표시하고 싶습니다)
— muru

잘 모르겠습니다. 이 예에서 공통 요소가 무시되지 않습니까 (예 : printf및 ello)?
— Sparhawk

1
이 예에서는 @Sparhawk입니다. 그러나 더 복잡한 변경으로 인해 빠르게 지저분 해집니다.
— muru

아, 알았어요. 그러면 약간 버그가 있습니다 ... 정보에 감사드립니다.
— Sparhawk
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.