我正在尝试比较两个程序集文件,其中一个文件全部大写,另一个文件全部小写。许多行在大小写和空格方面都是相同的。
我尝试了以下操作,同时两个缓冲区处于差异模式:
:set diffopt+=icase
:set diffopt+=iwhite
:diffupdate
空白似乎工作得很好,但忽略大小写却不起作用。例如,在以下两行中:
I0=R0; // ADDRESS OF INPUT ARRAY
i0 = r0; // address of input array
[第一行以 12 个空格开头,第二行以一个制表符开头]
为什么?我能做些什么?
更新:刚刚注意到在这两行中所有差异都被忽略了:
// MULTIPLY R1 BY 4 TO FETCH DATA OF WORD LENGTH
// multiply r1 by 4 to fetch data of word length
您的比较失败是因为空格,而不是大小写。发生这种情况是因为当您使用iwhite
选项,在后台,vimdiff 正在执行diff -b
这对于如何比较空白比您正在寻找的内容更具限制性。更具体地说,-b
选项仅忽略空白数量的差异已经有空格的地方。在你的例子中,i0 = r0;
被标记为不同于I0=R0;
因为一个字符之间包含空格,而另一个则不包含空格。
根据 vimdiff 文档,您可以覆盖默认行为iwhite
通过设置选项diffexpr
为非空值。您感兴趣的差异标志是--ignore-all-space
,这对空白更加灵活。您可以更改diffexpr
在 vimdiff 中使用此选项而不是默认选项-b
选项如下:
set diffexpr=MyDiff()
function MyDiff()
let opt = ""
if &diffopt =~ "icase"
let opt = opt . "-i "
endif
if &diffopt =~ "iwhite"
let opt = opt . "--ignore-all-space "
endif
silent execute "!diff -a --binary " . opt . v:fname_in . " " . v:fname_new .
\ " > " . v:fname_out
endfunction
请参阅文档了解更多详细信息:
http://vimdoc.sourceforge.net/htmldoc/options.html#%27diffopt%27 http://vimdoc.sourceforge.net/htmldoc/options.html#%27diffopt%27
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)