如何通过Git使用Vimdiff获取bufspec

Eli*_*ter 9 git vim vimdiff git-merge

我已经阅读了Vimdiff查看与Vimdiff的差异以及使用诸如"vimdiff multiple","vimdiff git","vimdiff命令"等内容进行各种谷歌搜索.

当使用do或diffg时,我得到错误"在diff模式下超过两个缓冲区,不知道使用哪个缓冲区".

当使用diffg v:fname_in时,我得到"v:fname_in没有匹配的缓冲区".

从vimdiff文档:

:[range] diffg [et] [bufspec]
修改当前缓冲区以撤消与另一个缓冲区的差异.如果给出[bufspec],则使用该缓冲区.如果[bufspec]引用当前缓冲区,则没有任何反应.否则,仅当diff模式中有另一个缓冲区时才有效.

和更多:

当'diffexpr'不为空时,Vim会计算得到所提到格式的diff文件.这些变量设置为使用的文件名:

v:fname_in原始文件
v:fname_new同一文件的新版本
v:fname_out生成的diff文件

所以,我需要获取bufspec的名称,但是没有设置默认变量(fname_in,fname_new和fname_out).

我通过终端在linux机器上运行命令git mergetool.

[编辑]一个产生更多问题的部分解决方案.我在缓冲区的底部使用了"filename".它只有一半的答案,因为偶尔我得到一个文件不存在错误.我相信它一直是"不存在"的文件的远程版本.我怀疑这与git和索引有关.

你如何获得的bufspec值一致,而使用Vimdiff可以通过混帐合并工具?

小智 10

[bufspec]上面的参数可以是缓冲区编号,缓冲区名称的模式或缓冲区名称的一部分.例子:

  • :diffget 使用处于diff模式的其他缓冲区
  • :diffget 3 使用缓冲区3
  • :diffget v2 使用匹配v2且处于diff模式的缓冲区(例如file.c.v2)

我总是使用缓冲区的数量.

  • 棒极了。您会认为这很容易猜到。猜猜我太生气了,看不到这么简单的东西。*感叹*谢谢谢谢! (2认同)

小智 6

键入"2",然后按ctrl-g,它会显示缓冲区编号和文件.