有没有办法将vimdiff的差异策略设置为耐心算法?它内置于git中,似乎比普通的差异要好得多。
供参考:
答案 0 :(得分:6)
我做了一个允许这个的插件。试试我的EnhancedDiff插件
答案 1 :(得分:2)
请参阅:help diff-diffexpr
:http://vimdoc.sourceforge.net/htmldoc/diff.html#diff-diffexpr
您可以将其设置为
set diffexpr=MyDiff()
function MyDiff()
let opt = ""
if &diffopt =~ "iwhite"
let opt = opt . "-w "
endif
silent execute "!git diff --no-index --patience " . opt . v:fname_in . " " . v:fname_new . " > " . v:fname_out
endfunction
我尝试了这个,但我没有让它工作,因为git输出统一的diff格式,而vim期望ed样式格式(参见上面的doc)。您可能必须转换git diff的输出,这可能不是您想要的。
答案 2 :(得分:2)
从vim 8.1.0360(2018年9月)开始,vim附带了xdiff(git用于diffs的同一库),这意味着vim和neovim现在原生支持耐心diff(参见{{3 }}。将此添加到您的vimrc:
if has("patch-8.1.0360")
set diffopt+=internal,algorithm:patience
endif
可以在neovim issue 1466上找到新的algorithm:patience
和indent-heuristic
差异选项的精彩介绍。