2012-01-14 1 views
11

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

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

Спасибо,

ответ

0

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

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

Это не позволяет прямое редактирование. В общем случае целью было бы отредактировать файл2 прямо на месте, за исключением игнорируемых строк. – ralfoide

6

Для того, чтобы достичь этого, вы можете добавить следующую строку в .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! для принудительной замены по определению.

+0

Я надеялся, что у кого-то еще была эта идея. Спасибо за то, что мне нужно самому взломать мой .vimrc. Я поделюсь им иногда, поэтому я дал вам должный кредит. ;-) –

+0

Спасибо за редактирование @Greg – sanmiguel

+0

Чтобы помочь родственному начинающему VIM, как установить g: diffignore? Что такое префикс 'g'? – drevicko

 Смежные вопросы

  • Нет связанных вопросов^_^