игнорировать строки с определенными словами в выводе vimdiff - PullRequest
12 голосов
/ 14 января 2012

У меня есть 2 больших файла, чтобы взять vimdiff.В выводе vimdiff я хочу игнорировать строки, отображающие diff, но имеют определенное слово.

например, в моем случае я хочу игнорировать diff всех строк с префиксом WARNING: в моих файлах.

Спасибо,

Ответы [ 3 ]

7 голосов
/ 03 апреля 2012

Чтобы добиться этого, вы можете добавить в ваш .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, будет игнорировать ТОЛЬКО измененные строки, где строка в ОБА (или во всех) файлах соответствует этому выражению.

См. man diff для получения дополнительной информации о переключателе --ignore-matching-lines=RE и :h diffexpr в vim для получения дополнительной информации об этом.

РЕДАКТИРОВАТЬ: Добавлена ​​необязательная переменная g:diffignore для управления, какой шаблон использовать. Также используется function! для принудительной замены при определении.

0 голосов
/ 01 марта 2019

Я долго искал решение этой проблемы и обнаружил, что плагин EnhancedDiff - самое простое решение, которое делает ваши различия чуть более интеллектуальными для начала:)

1. Установка (https://github.com/chrisbra/vim-diff-enhanced#installation)

Используйте менеджер плагинов на ваш выбор:

2. Diff как обычно

Использование vimdiff, nvim -d или diffthis, например

3. Установить фильтр

:EnhancedDiffIgnorePat ^WARNING:.*

4. Re-Diff

:diffupdate
0 голосов
/ 14 января 2012

Почему бы вам не отфильтровать файлы перед вызовом vimdiff?

grep -v "^WARNING" file1 > file1_w; 
grep -v "^WARNING" file2 > file2_w; 
vimdiff file1_w file2_w
...