2011-10-07 2 views
10

나는 오류 확인이 필요한 커다란 json 파일을 가지고 있으며, 차이점을 확인하고 전체 diff 세션에 적용하여 더 이상 제거 할 수 있는지 궁금합니다. 아래로vimdiff에서 ok로 표시 차이점

예를 여기

Name: Donald Duck | Name: Daisy Duck 

내가 "확인"DIFF 등이 변경 사항을 표시 할 수 있도록하고 싶습니다 (즉, 내가 이름과 명백한 성 변화를 기대).

+2

큰 질문을 주어야한다! 그러나 슬프게도 나는 이것이 가능하다는 것을 의심합니다. –

+0

예, 도움이 필요하다면 diff 섹션에 언급 될 것 같습니다. 내가 생각할 수있는 것은 당신이 많이 해킹 할 수 있고 vim에서 "ok as mark"명령으로 채워지는 무시할 수있는 임시 파일을 읽는 커스텀 diff 드라이버를 작성할 수 있다는 것이다. 작업. – Cascabel

+0

음. 그것은 일종의 언급입니다. 그러나 당신은 창조적으로 생각해야합니다. 빔은 필사자에게 너무 유연합니다. – sehe

답변

2

음, 정력에 그것을 할 수있는 방법은, 단순히 정의 DIFF 표현을 할 것

예를 들어, 이

물론
set diffexpr=MyDiff() 
function! MyDiff() 
    let opt = "" 
    if &diffopt =~ "icase" 
     let opt = opt . "-i " 
    endif 
    if &diffopt =~ "iwhite" 
     let opt = opt . "-Ewb " 
    endif 
    silent execute "!diff -I 'Duck' " . opt . v:fname_in . " " . v:fname_new . 
       \ " > " . v:fname_out 
endfunction 

, 당신은보다 더 유연하게 할 것입니다 당신의 .vimrc에 가야한다, 그러나 이것은 일반적인 방법 당신에게

+0

감사합니다. 쉬운 해결책은 아니지만 여전히 내가 가장 좋아하는 솔루션입니다. – Sedrik

+0

그게 전부 였어 .... :) – sehe

+0

질문에 여러 답변을 할 수는 있었지만 분명히 =는 아닙니다. (여전히 오버플로 스택에 약간 새로운) – Sedrik

1

내가 할 수있는 기본 방법이 있다고 생각하지 않습니다. 그러나 저에게 일어나는 방법은 그 파일을 대체하고 rediff를하는 것입니다.

그 이름 변경이 OK 인 경우 예를 들어, 그럼 그냥 두 파일에 대체 :

%s/Name: Donald Duck/Name: placeholder_1/g ; in file 1 
%s/Name: Daisy Duck/Name: placeholder_1/g  ; in file 2 

당신은 예를 들어,이 작업을 수행 할 수 vim -d를 시작하기 전에 sed 또는 perl.

이제는 일치합니다. 그러나 Donald Duck에서 Mickey Mouse 로의 변경은 Daffy Duck에서 Daisy Duck로 변경되지 않습니다.

+0

간단한 사례 = = – Sedrik