在vimdiff中将差异标记为正常

在vimdiff中将差异标记为正常,vim,vimdiff,Vim,Vimdiff,我有几个大型json文件需要检查错误,我想知道是否有可能将差异标记为ok,并将其应用于整个diff会话,从而在文件中进一步消除它 范例 Name: Donald Duck | Name: Daisy Duck 在这里,我希望能够将这一变化标记为“ok”差异(即,我希望名称和明显的性别变化)。我不认为有一种内在的方法可以做到这一点。但我想到的方法是对文件进行替换,然后再进行重发 例如,如果名称更改正常,则只需在两个文件中替换: %s/Name: Donald Duck/Name: pl

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

范例

Name: Donald Duck    |   Name: Daisy Duck

在这里,我希望能够将这一变化标记为“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来实现这一点


现在,这些将匹配。但是,从唐老鸭到米老鼠的变化不会,从达菲鸭到黛西鸭的变化也不会。

好吧,在vim中实现这一点的方法,就是做一个自定义的差异表达式

e、 这应该放在你的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

当然,您可能希望使其更加灵活,但这将为您提供一个通用方法

很好的问题!但遗憾的是,我怀疑这是可能的。是的,我想如果是的话,我会在帮助的不同部分提到。我所能想到的是,您可以进行大量黑客攻击并编写一个自定义的diff驱动程序,该驱动程序读取一个包含要忽略的大块头的辅助临时文件,该文件通过vim中的“markasok”命令填充。。。但这是一个很大的工作。有点被提到了。但你必须创造性地思考。Vim对于mre凡人来说太灵活了:)谢谢,虽然不是一个简单的解决方案,但它仍然是我能使用的最好的解决方案。我认为你可以对一个问题有多个答案,但显然不是=)(对于堆栈溢出来说还是有点新)