한 줄 내에서 더 자세한 비교


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

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

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

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