W tym celu, można dodać następujące wpisy do .vimrc (prosty poglądach modyfikacji z przykładu znaleźć uruchamiając :h diffexpr
wewnątrz 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
Warto zauważyć, że Funkcjonalność udostępniana przez przełącznik -I
() dla diff
będzie TYLKO ignorować wszelkie zmienione linie, w których linia w obu plikach (lub wszystkich) pasuje do tego wyrażenia.
Więcej informacji na temat przełącznika --ignore-matching-lines=RE
i :h diffexpr
w vim zawiera więcej informacji na ten temat.
EDYCJA: Dodano opcjonalną zmienną g:diffignore
w celu kontrolowania używanego wzoru. Zastosowano także function!
, aby wymusić zastąpienie z definicji.
To nie pozwala na bezpośrednią edycję. Ogólnym celem jest edycja pliku 2 bezpośrednio na miejscu, z wyjątkiem zignorowanych linii. – ralfoide