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