Для того, чтобы достичь этого, вы можете добавить следующую строку в .vimrc (простой нравом модификации из примера, приведенного запустив :h diffexpr
в 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
Стоит отметить, что функциональность, предоставляемая переключателем -I
(или) для diff
, ТОЛЬКО игнорирует любые измененные строки, в которых строка в BOTH (или всех) файлах соответствует этому выражению.
Для получения более подробной информации об этом коммутаторе --ignore-matching-lines=RE
и :h diffexpr
см. man diff
.
EDIT: добавлена необязательная переменная g:diffignore
для управления тем, какой шаблон использовать. Также используется function!
для принудительной замены по определению.
Это не позволяет прямое редактирование. В общем случае целью было бы отредактировать файл2 прямо на месте, за исключением игнорируемых строк. – ralfoide