2011-10-07 13 views
10

私はエラーをチェックする必要がある大きなjsonファイルをいくつか持っていて、違いをokとマークしてdiffセッション全体に適用できるかどうか疑問に思っていました。ファイル内で下に移動します。vimdiffでokとマークする

例ここで

Name: Donald Duck | Name: Daisy Duck 

私は「OK」の差分(すなわち、私は名前と見かけ上の性別変更を期待する)として、この変更をマークできるようにしたいと思います。

+2

を与える必要があります!しかし、残念ながら私はこれが可能であるとは思わない。 –

+0

ええ、私はもしそれがあったなら、ヘルプのdiffセクションで言及されると思います。私が考えることができるのは、たくさんのハックをしてカスタム差分ドライバを作成することです。無視するハンズを含む補助的な一時ファイルを読み込みます。これは、vim内で "ok as mark"コマンドで生成されます...しかし、作業。 – Cascabel

+0

Mmmm。これは一種の言及です。しかし、あなたは創造的に考える必要があります。 Vimはmre mortalsにはあまりにも柔軟性があります:) – sehe

答えて

2

まあ、vimの中でそれを行うための方法は、単にカスタム差分式を行うことを考え

例えばこれはあなたの.vimrcにもちろん

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 

を行けば、あなたはそれよりも、それをより柔軟にしたいと思いますが、これはあなたの偉大な質問一般的な方法

+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

関連する問題