加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

让gVim的vimdiff忽略大小写

发布时间:2020-12-16 01:12:22 所属栏目:安全 来源:网络整理
导读:我试图比较两个汇编文件,其中一个是全部大写,另一个是小写.许多行与case和whitespace完全相同. 我尝试了以下,而diff模式下有两个缓冲区: :set diffopt+=icase:set diffopt+=iwhite:diffupdate 空白的东西似乎运作良好,但忽略的情况不起作用.例如,在以下两行
我试图比较两个汇编文件,其中一个是全部大写,另一个是小写.许多行与case和whitespace完全相同.

我尝试了以下,而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文档,您可以通过将diffexpr设置为非空值来覆盖iwhite选项的默认行为.您感兴趣的diff标志是–ignore-all-space,它对空格更灵活.您可以更改vimdiff中的diffexpr以使用此选项而不是默认的-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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读