gpt4 book ai didi

vim - 让 gVim 的 vimdiff 忽略大小写

转载 作者:行者123 更新时间:2023-12-04 02:06:17 27 4
gpt4 key购买 nike

我试图比较两个汇编文件,其中一个全部大写,另一个小写。许多行在大小写和空格之前都是相同的。

我尝试了以下操作,而两个缓冲区处于 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com