如何让 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 忽略大小写? 的相关文章

  • 文件保存期间语法突出显示随机消失

    我正在使用 vim 编辑一些 python 文件 最近偶尔会出现在 vim 中保存缓冲区后语法高亮消失的情况 我尝试重置syntax on and set filetype python但无济于事 我根本不知道是什么原因导致了这个问题 所以
  • 在 Vim 中以反转模式突出显示匹配项

    如何在 Vim 中使用 match 命令突出显示与给定模式不匹配的文本 所以 我想要相反的 match myGroup foo 好吧 你可以这样做 match myBaseHighlight foo 2match myGroup where
  • Vim langmap 中断插件 (bépo)

    我正在使用 b po 键盘映射 http bepo fr http bepo fr 并寻求完美的 vim 映射 So far I used a long list of noremap http bepo fr wiki Vim B C3
  • Foldmethod=同时标记和语法?

    同一文件是否可以根据标记和语法使用折叠 Since foldmethod一次只能设置为一个 我认为您真正可以做到这一点的唯一方法是使用 set foldmethod expr并与foldexpr 即使如此 我也不确定它是否能够完全按照您的要
  • vim - 如何删除 netrw?

    我正在测试https github com skwp dotfiles https github com skwp dotfiles 不幸的是它确实安装了很多我不想要的东西 例如 现在 使用空的 vimrc 当我打开 vim 时 我得到 N
  • 如何使用 tmuxinator 在 tmux 中拆分水平窗格内的两个垂直窗格

    目前我的 tmuxinator yml 文件中有这个 windows editor layout main horizontal panes vim server rails s 这给了我两个窗口 一个用于编辑器 另一个用于服务器 在编辑器
  • vim 映射键不起作用

    我一直在尝试映射 ctrl 来在 vim 的插入模式下保存 它似乎永远不起作用 http vim wikia com wiki Map Ctrl S to save current or new files http vim wikia c
  • VIM - 显示上次保存版本和当前未保存版本的差异[重复]

    这个问题在这里已经有答案了 可能的重复 在 Vim 中保存文件之前我可以看到更改吗 https stackoverflow com questions 749297 can i see changes before i save my fi
  • 如果文件类型 == tex

    如果文件是乳胶文件 我想在 vimrc 中运行命令 我想我的语法有问题 但它不起作用 有什么线索吗 if filetype tex set spell endif 您可以使用自动命令来实现您想要的 autocmd BufNewFile Bu
  • 在键盘快捷键上插入预定义文本

    我经常插入binding pry当我调试我的 ruby 文件时 当我使用 Vim 时 我希望将其自动化 以避免每次都重新输入 我怎样才能做到呢 我想要映射的确切顺序是 插入新行 Insert binding pry到新创建的行 返回正常模式
  • Vim errorformat:在消息字符串中包含部分表达式

    使用vim的errorformat语法 有没有办法使用部分消息来过滤结果 例如 除了错误本身之外 某些链接器错误没有任何明确的内容将它们区分为线路上的错误 path to foo cpp 42 undefined reference to
  • Vim 脚本中的“reduce”函数

    Vim 脚本有一些非常基本的函数式编程工具 It has map and filter 但据我所知它缺乏reduce 功能 Reduce https en wikipedia org wiki Fold 28higher order fun
  • 尝试安装已安装 vimballPlugin 的 vimball

    我想安装这个plugin http www vim org scripts download script php src id 16854 所以首先我提取 zip 的内容 然后执行以下操作 vim camelcasemotion vba
  • VIM:禁用光标/箭头键,但仅用于导航

    inoremap
  • Ubuntu 上的 Vim:文本渲染错误,奇怪地重复和消失

    不久前我在 ubuntu 12 04 上安装了 vim 有时 当我在代码上运行光标 使用键盘 而不是鼠标 时 文本会消失 就好像渲染字符时出现问题一样 当我再次运行光标时 它通常会重新出现 这似乎是随机发生的 但通常足以让人恼火 为了更清楚
  • 什么是 .un~ 文件或者为什么终端中的 Vim 会创建 .un~ 文件?

    我注意到我有一些以 un 例如我有一个 vividchalk vim un 但我不确定它是从哪里来的 看起来它们是我在终端中使用 Vim 时创建的 这些文件是什么 当我关闭正在编辑的文件时 可以让它们自行删除吗 当你编辑和保存文件时 Vim
  • 终端 vim 中的语法高亮显示,但 gVIM 中没有

    我目前在终端中使用 VIM 并且有完美的语法突出显示 但是当我尝试使用 gvim 时 无论什么类型的文件或输入多少次 syntax on 我都没有得到任何语法突出显示 有人有什么想法吗 谢谢 这是我的 vimrc 供感兴趣的人使用 Turn
  • 为什么使用 键取消搜索时 vim incsearch 会暂停?

    在 vim 中 如果你set incsearch然后它将滚动到当前搜索词的下一个匹配项 而无需移动光标 我经常用它来阅读一段代码而不用将光标移动到那里 因为我可以点击
  • 在 Vim 中平滑滚动的最佳方法是什么?

    Vim 中的主要滚动命令是 Ctrl B and Ctrl F as well as PageUp and PageDown scroll by full page Ctrl U and Ctrl D scroll half a page
  • Vim 和 snipMate(插件)- 添加新代码片段不起作用

    我正在尝试为我的 snipMate 插件创建一个新的片段 我使用一些名为 即 myfile endfile 的文件 所有 endfile 文件都应具有与 html 文件相同的 片段 所以我做了 cp html snippet endfile

随机推荐

  • 动画 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