我有 2 个大文件要使用 vimdiff。在 vimdiff 输出中,我想忽略显示 diff 但有特定单词的行。
例如,在我的情况下,我想忽略WARNING:
文件中所有带前缀的行的差异。
谢谢,
为了实现这一点,您可以将以下内容添加到您的 .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
(or --ignore-matching-lines=
) 开关提供的功能diff
只会忽略 BOTH (或所有) 文件中的行与此表达式匹配的任何更改的行。
请参阅man diff
有关--ignore-matching-lines=RE
开关的更多详细信息,并:h diffexpr
在 vim 中了解有关此的更多详细信息。
编辑:添加了可选变量g:diffignore
来控制要使用的模式。也用于function!
强制替换定义。
我已经为此寻找解决方案很长时间了,我发现EnhancedDiff 插件是最简单的解决方案,它使您的差异开始时稍微更智能:)
使用您选择的插件管理器:
git clone https://github.com/chrisbra/vim-diff-enhanced.git ~/.vim/bundle/vim-enhanced-diff
:Helptags
(安装后只需要安装一次文档)NeoBundle 'chrisbra/vim-diff-enhanced'
Plugin 'chrisbra/vim-diff-enhanced'
Plug 'chrisbra/vim-diff-enhanced'
使用vimdiff
,nvim -d
或diffthis
例如
:EnhancedDiffIgnorePat ^WARNING:.*
:diffupdate