Para lograr esto, se podía añadir lo siguiente a su .vimrc (una modificación simple-mente a partir del ejemplo se encuentra ejecutando :h diffexpr
dentro de vim):
set diffexpr=MyDiff()
function! MyDiff()
let opt = ""
if exists("g:diffignore") && g:diffignore != ""
let opt = "-I " . g:diffignore . " "
endif
if &diffopt =~ "icase"
let opt = opt . "-i "
endif
if &diffopt =~ "iwhite"
let opt = opt . "-b "
endif
silent execute "!diff -a --binary " . opt . v:fname_in . " " .
\ v:fname_new . " > " . v:fname_out
endfunction
Es de destacar que la la funcionalidad provista por el interruptor -I
(o --ignore-matching-lines=
) para diff
SÓLO ignorará las líneas cambiadas donde la línea en AMBOS (o todos) archivos coincida con esta expresión.
Consulte man diff
para obtener más información sobre el interruptor --ignore-matching-lines=RE
y :h diffexpr
dentro de vim para obtener más detalles al respecto.
EDITAR: Agregó la variable opcional g:diffignore
para controlar qué patrón usar. También se usó function!
para forzar el reemplazo en la definición.
Esto no permite la edición directa. El objetivo general sería editar el archivo2 directamente en su lugar, a excepción de las líneas ignoradas. – ralfoide