我有2个大文件需要vimdiff。在vimdiff输出中,我想忽略显示diff但具有特定单词的行。在vimdiff输出中忽略带特定单词的行
例如在我的情况下,我想忽略在我的文件中前缀为WARNING:
的所有行的差异。
感谢,
我有2个大文件需要vimdiff。在vimdiff输出中,我想忽略显示diff但具有特定单词的行。在vimdiff输出中忽略带特定单词的行
例如在我的情况下,我想忽略在我的文件中前缀为WARNING:
的所有行的差异。
感谢,
你为什么不过滤调用方面Vimdiff前的文件吗?
grep -v "^WARNING" file1 > file1_w;
grep -v "^WARNING" file2 > file2_w;
vimdiff file1_w file2_w
为了实现这一点,你可以添加以下到您的.vimrc(从例如一个头脑简单的修改的Vim内运行:h diffexpr
找到):
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内对更多细节。
编辑:添加可选变量g:diffignore
来控制要使用的模式。还用function!
强制更换定义。
这不允许直接编辑。一般来说,目的是直接编辑file2,除了忽略的行。 – ralfoide 2013-12-16 23:14:43