有没有办法将vimdiff配置为忽略所有空白?
我使用有没有办法将vimdiff配置为忽略所有空白?,vim,diff,vimdiff,Vim,Diff,Vimdiff,我使用vim-d file1 file2来查看它们之间的差异。这很好,但我想忽略空白更改-它们与源代码文件无关 Vim help表示以下命令将发挥作用: set diffopt+=iwhite 但不幸的是,这个命令只将-b添加到diff工具命令行,而这只会忽略后面的空格。diff的正确命令行键应为-w,以忽略所有空格更改。但是我找不到如何直接从Vim修改diff命令行。当然,我可以编译一个自定义的diff,或者用diff.sh替换diff,但这看起来有点难看:( 有没有更好的方法来修改Vim如
vim-d file1 file2
来查看它们之间的差异。这很好,但我想忽略空白更改-它们与源代码文件无关
Vim help表示以下命令将发挥作用:
set diffopt+=iwhite
但不幸的是,这个命令只将-b
添加到diff工具命令行,而这只会忽略后面的空格。diff的正确命令行键应为-w
,以忽略所有空格更改。但是我找不到如何直接从Vim修改diff命令行。当然,我可以编译一个自定义的diff,或者用diff.sh替换diff,但这看起来有点难看:(
有没有更好的方法来修改Vim如何与diff工具交互以显示文件差异?是。如您所做,设置
iwhite
选项,但另外,将differexpr
设为空
从本手册的相关章节:
伊瓦特
忽略空白量的更改。添加
如果出现以下情况,“diff”命令的“-b”标志
“DifferExpr”为空。请检查文档
“diff”命令的作用
没错。它应该忽略添加尾随
空白,但不是前导空白
还请注意,您可以通过设置differxpr
来提供自定义的diff命令行。请参阅上的讨论,特别是:
“DifferExpr”选项可以设置为使用标准以外的其他内容
“diff”程序比较两个文件并找出差异
当'differxpr'为空时,Vim使用此命令查找差异
在文件1和文件2之间:
diff file1 file2 > outfile
这实现了您想要的功能(取自将
-b
更改为-w
):
set diffopt+=iwhite
设置diffexpr=DiffW()
函数DiffW()
让我们选择“”
if&diffopt=~“icase”
让opt=opt。“-i”
恩迪夫
如果&diffopt=~“iwhite”
让opt=opt.“-w”将vim的-b与-w交换
恩迪夫
静默执行“!diff-a--binary”.opt。
\v:fname_in.“.v:fname_new.>”.v:fname_out
端功能
…我仍然在寻找一个更好的DifferExpr助手来处理哪些行映射到哪个行(,即使使用
-w
而不是-b
,也很难将额外的空白与注释行之类的小编辑结合起来)。也许?谢谢,这对我有帮助。我现在只需要这个(比Adam K的建议更简单)在我的~/.vimrc中:
set diffopt+=iwhite
set diffexpr=""
而且它做到了……这仍然是我所知道的最强大的差异工具,比任何其他工具都要好。解决亚当·卡茨解决方案评论中提出的问题: 根据vim版本和用户设置,
silent
命令发出后可以忽略重新绘制屏幕。我也遇到了这个问题,在使用建议的diffexpr
后执行:diffo
时就会出现。我的解决方案是将silent execute命令更改为以下内容:
silent execute "!diff -a --binary " . opt .
\ v:fname_in . " " . v:fname_new . " > " . v:fname_out | redraw!
这将在发出命令后强制重新绘制。这不会忽略所有空格(-w in diff),而是实现忽略对空格的更改(-b in diff)。不,这将实现diff-b,而不是问题所要求的diff-w。Adam K在这里有唯一正确的答案。谢谢!只需“set diffopt+=iwhite”“已经很有用了,因为它是由vimdiff本身以交互方式发布的。这应该是公认的答案,因为它是目前唯一正确的答案。可惜vim没有一个简单的选项来在“diff-b”和“diff-w”之间切换,这两个选项几乎没有什么用处。不知怎的,我的
vim
(版本8,Debian Stretch)在:diffupdate
之后闪烁并显示一个空白屏幕,只有在分页
或分页
之后才重新绘制正确的屏幕。非常奇怪…@DrBeco:这不是解决问题的正确地方,但我首先要看看gvim是否有问题(假设您有GUI)。如果没有,可以尝试使用不同的终端模拟器或不同的$TERM
定义(例如“xterm-color”或“xterm-256color”,甚至只是“xterm”)。否则,我建议搜索web,如果没有帮助,搜索然后询问。对于解决方法,Ctrl+L可能会起作用。也许还可以尝试更改语法高亮显示。它在我的vimdiff中不起作用。结果就像只设置diffopt+=iwhite一样executed@ka3ak–确保您可以运行diff-a--binary-i-wfILE1文件2
从命令行开始,它根据您的喜好处理空白。如果是这样,也许可以尝试使用该diff
命令的绝对路径。如果您需要进一步的帮助,最好在上问一个关于它的详细问题。在此类网站上的评论,尤其是缺乏详细信息的评论,不会让您获得k你需要什么帮助,你需要问一个问题。