如何让 gVim 的 vimdiff 忽略大小写?

2024-01-08

我正在尝试比较两个程序集文件,其中一个文件全部大写,另一个文件全部小写。许多行在大小写和空格方面都是相同的。

我尝试了以下操作,同时两个缓冲区处于差异模式:

: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(使用前将#替换为@)

如何让 gVim 的 vimdiff 忽略大小写? 的相关文章

随机推荐

  • 动画 UIButton 背景图像

    有没有办法用一组图像来为 UIButton 背景图像视图添加动画效果 我已经设法使用 imageView 属性来做到这一点 但找不到等效的背景属性 10x 这是我所做的 在 UIButton 子类中 像常规一样设置按钮图像 self set
  • C++ 中“Matlab besselk(x,y,1)”的精确等价物是什么?

    我努力了boost math cyl bessel k x y exp y 在大多数情况下 这等于 Matlab 的缩放比例besselk x y 1 但在某些情况下 例如 x 1 y 2000 当两个besselk x y 0 and b
  • Puppeteer 从多个 HTML 字符串生成 PDF

    我正在使用 Puppeteer 从 HTML 字符串生成 PDF 文件 阅读文档 我发现了两种生成PDF文件的方法 首先 传递一个 url 并调用goto方法如下 page goto https example com page pdf f
  • 为什么循环指令很慢?英特尔就不能有效地实施它吗?

    LOOP 英特尔参考手册条目 http felixcloutier com x86 LOOP LOOPcc html 减少 ecx rcx 如果非零则跳转 https stackoverflow com questions 46881279
  • 迭代字典列表

    我有一个列表 myList 其中每个元素都是一个字典 我希望迭代这个列表 但每次我只对每个字典中的一个属性 年龄 感兴趣 我也有兴趣记录迭代次数 I do for i entry in enumerate myList print i pr
  • 声纳运行器运行时出现 SocketTimeoutException

    我正在使用声纳 一切都工作正常 然后大约一个月没有使用它后 我在运行 sonar runner bat 时开始收到以下异常 我正在使用嵌入式 h2 数据库服务器并使用默认端口 INFO Error stacktraces are turne
  • SSIS 调试器不会显示进度

    只是想知道是否有人遇到过这个问题 它似乎不是特定于包的 并且是零星的 我只是在 Visual Studio 中启动 SSIS 调试器 调试器加载但不执行任何操作 我知道包正在运行 因为我可以在任务管理器中看到 DTSDebugger 如果我
  • 在 Apache Airflow 中运行超过 32 个并发任务

    我正在运行 Apache Airflow 1 8 1 我想在我的实例上运行超过 32 个并发任务 但无法使任何配置发挥作用 我正在使用 CeleryExecutor UI 中的气流配置显示 64parallelism and dag con
  • JavaScript for 循环问题

    for循环可以重复一个数字3次吗 例如 for i 0 i lt 5 i 创建 1 2 3 4 5 我想创建一个执行此操作的循环 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 那可能吗 for i 1 i lt 5 i for
  • 获取 MethodBase 对象的最快方法是什么?

    我有一个 Type 对象和一个方法名称 Type type string methodName 我需要一个方法 methodName 的 MethodBase 对象 位于堆栈中的某个位置 这有效 MethodBase nemo StackT
  • Detours - 挂钩类成员函数 - 设置目标函数偏移量的语法?

    对于非类函数 我可以简单地声明要绕行的函数的偏移量 如下所示 typedef int cdecl SomeFunc char pBuffer int size SomeFunc Real SomeFunc SomeFunc 0xCAFEBA
  • 在android中添加水印图像

    我有代码可以在图像中添加水印 如下所示 public static Bitmap mark Bitmap src String watermark Point location Color color int alpha int size
  • 为什么 Edge 主体滚动条与 Firefox 主体滚动条不同?

    我正在创建一个聊天列表 它在 Firefox 上运行良好 但在 Microsoft Edge 上却不起作用 根的CSS div class chatting chatting position fixed bottom 5px right
  • 将客户端证书传递给 Web 服务,而无需设置系统范围的属性

    我正在尝试使用 JAX RPC 实现将客户端证书传递给 Web 服务 Web 服务采用 rpc 编码风格 到目前为止 我可以通过设置系统属性来做到这一点 System setProperty javax net ssl keyStore c
  • 当用户尚未登录时,FB.ui() 在 Safari 中通过异步请求给出错误

    我正在尝试让用户能够在我的外部网站上的 Facebook 墙上发布内容 我在 Safari 中遇到问题 如果用户未登录 即他们尚未完成调用 FB login 的流程 则在调用 FB ui 时会收到以下 JS 错误 类型错误 未定义 不是对象
  • ServiceLoader.next 导致 NoClassDefFoundError

    我这么问是因为我完全not我确信我做了正确的事 我正在使用 Eclipse 进行 Web 项目 我们在包中将其称为 WebProject 废话 com web project 我希望 WebProject 在运行时加载 JAR 插件 所以我
  • 上下文、AsyncTask 和轮换更改

    这是一个很好的做法吗getApplicationContext 使用 AsyncTask 以便不必附加和分离 Activity以避免内存泄漏when发生旋转变化并且活动被破坏 我认为它应该是正确的 因为我实际上需要一个依赖于洞应用程序的上下
  • 使用 Gmail 凭据登录

    有没有一种方法可以使用 Google 凭据来获取基本用户信息 例如 电子邮件 姓名 性别 并在我的应用程序中使用它们 这就像允许用户使用 Gmail 登录我的应用程序一样 我也问了同样的问题here https stackoverflow
  • ggplot2 二维密度权重

    我正在尝试使用 R 中的 ggplot2 用二维密度轮廓绘制一些数据 我得到一个有点奇怪的结果 首先 我设置了 ggplot 对象 p lt ggplot data aes x Distance y Rate colour Company
  • 如何让 gVim 的 vimdiff 忽略大小写?

    我正在尝试比较两个程序集文件 其中一个文件全部大写 另一个文件全部小写 许多行在大小写和空格方面都是相同的 我尝试了以下操作 同时两个缓冲区处于差异模式 set diffopt icase set diffopt iwhite diffup