代码之家  ›  专栏  ›  技术社区  ›  Elizabeth Buckwalter

通过Git使用Vimdiff时如何获得bufspec

  •  8
  • Elizabeth Buckwalter  · 技术社区  · 16 年前

    我读过 Vimdiff 和 Viewing differences with Vimdiff 再加上使用“vimdiff multiple”、“vimdiff git”、“vimdiff commands”等进行各种google搜索。

    当在中使用diffg v:fname\u时,我得到“No matching buffer for v:fname\u in”。

    从vimdiff文档:

    :[范围]diffg[et][bufspec]
    [bufspec]引用当前缓冲区,然后什么也不发生。 模式。

    更多信息:

    提到的格式。这些变量设置为使用的文件名:


    v:fname\u同一文件的新版本
    v:fname\u输出结果差异文件

    我通过一个终端在linux机器上运行gitmergetool命令。

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

    如何获得bufspec值 在通过git mergetool使用vimdiff时?

    3 回复  |  直到 14 年前
        1
  •  10
  •   Tombart    8 年前

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

    • :diffget 使用另一个处于diff模式的缓冲区
    • :diffget 3
    • :diffget v2 使用匹配的缓冲区 v2 而且是在 差异模式(例如。, file.c.v2 )

        2
  •  6
  •   Memo    14 年前

    输入“2”,然后按ctrl-g,它会显示缓冲区编号和文件。

        3
  •  3
  •   Stew    10 年前

    列出可用的缓冲区编号和名称(有效值为 ),使用 :ls

    将列出缓冲区编号和名称。当前包含光标的窗口将由 % :

    :ls
      1 #a   "Gemfile.lock"                 line 1
      2 %a   "Gemfile.lock.LOCAL.4828.lock" line 1
      3  a   "Gemfile.lock.BASE.4828.lock"  line 0
      4  a   "Gemfile.lock.REMOTE.4828.lock" line 0
    

    使用时 diffget 或 diffput bufspec公司 争论。例如,假设上述代码段中反映的状态,我们可以使用:

    diffget REM

    抓住 Gemfile.lock.REMOTE.4828.lock