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