【发布时间】:2010-03-24 18:51:20
【问题描述】:
我已经阅读了 Vimdiff 和 Viewing differences with Vimdiff 以及使用“vimdiff multiple”、“vimdiff git”、“vimdiff commands”等内容进行各种谷歌搜索。
当使用 do 或 diffg 时,我收到错误“在 diff 模式下有两个以上的缓冲区,不知道要使用哪一个”。
使用 diffg v:fname_in 时,我得到“v:fname_in 没有匹配的缓冲区”。
来自 vimdiff 文档:
:[范围]diffg[et] [bufspec]
修改当前缓冲区以撤消与另一个缓冲区的差异 缓冲。如果给出 [bufspec],则使用该缓冲区。如果 [bufspec] 指的是当前缓冲区,然后什么也没有发生。 否则,这仅在 diff 中有另一个缓冲区时才有效 模式。
还有更多:
当 'diffexpr' 不为空时,Vim 求值以在 提到的格式。这些变量设置为使用的文件名:
v:fname_in 原始文件
v:fname_new 同一文件的新版本
v:fname_out 结果差异文件
所以,我需要获取 bufspec 的名称,但未设置默认变量(fname_in、fname_new 和 fname_out)。
我通过终端在 linux 机器上运行了命令 git mergetool。
[编辑] 产生更多问题的部分解决方案。我在缓冲区底部使用了“文件名”。这只是一半的答案,因为偶尔我得到一个文件不存在错误。我相信它始终是“不存在”的文件的远程版本。我怀疑这与 git 和索引有关。
在通过 git-mergetool 使用 vimdiff 时如何一致地获得 bufspec 值?
【问题讨论】: