我试图比较两个汇编文件,其中一个全部大写,另一个小写。许多行在大小写和空格之前都是相同的。
我尝试了以下操作,而两个缓冲区处于 diff 模式:
:set diffopt+=icase
:set diffopt+=iwhite
:diffupdate
空白的东西似乎工作得很好,但忽略大小写不起作用。例如,在以下两行中:
I0=R0; // ADDRESS OF INPUT ARRAY
i0 = r0; // address of input array
[第一行以 12 个空格开头,第二行以一个制表符开头]
为什么?我能做什么?
更新:刚刚注意到在这两行中,所有差异都被忽略了 OK:
// 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
关于vim - 让 gVim 的 vimdiff 忽略大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4830171/