11

我有几个大的 json 文件,我需要检查错误,并且想知道是否可以将差异标记为 ok 并将其应用于整个 diff 会话,从而在文件中进一步消除它。

例子

Name: Donald Duck    |   Name: Daisy Duck

在这里,我希望能够将此更改标记为“正常”差异(即我希望名称和明显的性别变化)。

4

2 回答 2

3

好吧,在 vim 中做这件事的方法,就是做一个自定义的 diff 表达式

例如,这应该放在你的 .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

当然,你想让它比这更灵活,但这应该给你一般的方法

于 2011-10-07T17:26:26.153 回答
1

我认为没有内置的方法可以做到这一点。但是我想到的方法是对文件进行替换,然后重新比较。

例如,如果该名称更改是可以的,那么只需在两个文件中替换:

%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 来执行此操作。

现在这些将匹配。但是从唐老鸭变成米老鼠不会,从达菲鸭变成雏菊鸭也不会。

于 2011-10-07T16:25:15.757 回答