vim - 有没有办法配置 vimdiff 以忽略所有空格?

标签 vim diff vimdiff

我使用 vim -d file1 file2 来查看它们之间的差异。这工作正常,但我想忽略空白更改 - 它们与源代码文件无关。

Vim 帮助指出以下命令将发挥作用:

set diffopt+=iwhite

但不幸的是,此命令仅将 -b 添加到 diff 工具命令行,并且仅忽略尾随空格。 diff 的正确命令行键应该是 -w,以忽略所有空白更改。但我找不到如何直接从 Vim 修改 diff 命令行。当然,我可以编译自定义 diff,或者用 diff.sh 替换 diff,但这看起来有点难看:(。

是否有更好的方法来修改 Vim 与 diff 工具交互以显示文件差异的方式?

最佳答案

更新:截至patch 8.1.0393 (2018-09-15),diffopt 可以被告知忽略所有空白:

set diffopt+=iwhiteall

如果您想要完全向后兼容,请像这样实现:

if exists('&diffopt')
  if has("patch-8.1.0393")
    set diffopt+=iwhiteall
  else
    set diffopt+=iwhite
    function DiffW()
      let opt = ""
       if &diffopt =~ "icase"
         let opt = opt . "-i "
       endif
       if &diffopt =~ "iwhite"
         let opt = opt . "-w "
       endif
       silent execute "!diff -a --binary " . opt .
         \ v:fname_in . " " . v:fname_new .  " > " . v:fname_out
       redraw
    endfunction
    set diffexpr=DiffW()
  endif
endif

这个函数是我从diffexpr docs借来的,将 -b 更改为 -w 并添加 redraw 命令以确保屏幕立即重绘,而不是等待用户点击 输入

在我改进 vim 的 diff 功能的相关任务中,我发现 patience diff support我一直想玩弄 diffchar plugin .

关于vim - 有没有办法配置 vimdiff 以忽略所有空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1265410/

相关文章:

python - 什么是 vim 功能 : --enable-pythoninterp

Vim 背景偏好

unix - 差异命令 : doesn't print lines that are different but still says the two files are different

version-control - 是否可以从 Perforce 变更列表中获取已更改的文件列表和已修改的行列表

使用 vimdiff 在文件中解决 Git 部分 merge 冲突

vim - Grails gdoc 编辑器支持(尤其是 IntelliJ)

vim - 如何判断在 vimscript 中搜索是否成功?

perl - 如何在Perl中区分两个文件?

mercurial - 使用 vimdiff 时如何摆脱困惑的 merge

vim - 有什么方法可以将多对文件排队以便与 vimdiff 进行比较?