【问题标题】:How to get vimdiff to display output from cvs diff --side-by-side如何让 vimdiff 显示来自 cvs diff --side-by-side 的输出
【发布时间】:2010-11-27 11:46:26
【问题描述】:

CVS diff 可以选择并排显示修订版本,并使用常见的补丁符号表示差异,例如:

import zlib                                        import zlib
                                                 > import time
import traceback                                   import traceback

import cElementTree as ElementTree                 import cElementTree as ElementTree

from util import infopage                          from util import infopage
                                                 > from util.timeout import Timeout

有没有办法将该输出通过管道传输到 vimdiff,以便它在两个并排的缓冲区中显示这两列以及 vimdiff 的所有差异突出优点?

我知道诸如 cvsvimdiff.vim 之类的工具,但这些工具的问题是它们一次只能处理一个文件,而 cvs diff 输出会列出多个文件。

【问题讨论】:

  • 你能告诉 CVS 的哪个选项可以做到这一点吗?

标签: vim diff cvs vimdiff


【解决方案1】:

一旦您在 Vim 缓冲区中保存了该文本,您就可以自己轻松地将其拆分为两个缓冲区。看起来您的示例输入在 50 个字符处进行了拆分。

所以使用<C-v> 来可视化块突出显示差异的一半,剪切它,将其粘贴到新缓冲区中,删除尾随空格和> 分隔符,然后就可以了。或者写一个函数来做,像这样(假设分割总是在 50):

function! SplitCVSDiff()
    exe "norm gg_\<C-v>51\<Bar>Gd:vnew\<CR>p"
    silent! %s/\v\s+(\> )?$//
endfunction

可能必须变得更健壮,我不熟悉 CVS 使用的输出的确切样式。不过应该不难。

【讨论】:

    【解决方案2】:

    我会写一个脚本说:vimdiff_cvs file.cc 这是做什么的:

    1. 在本地存储 file.cc 的差异,删除它,更新到存储库。现在将其复制为 ~/.vimdiff/file.cc.repo。
    2. 通过应用补丁恢复file.cc
    3. 调用 vimdiff file.cc ~/.vimdiff/file.cc.repo。

    【讨论】:

      猜你喜欢
      • 2022-12-02
      • 1970-01-01
      • 2022-11-12
      • 1970-01-01
      • 2010-09-11
      • 1970-01-01
      • 2020-03-23
      • 2013-09-15
      相关资源
      最近更新 更多