我使用 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/