1

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 输出列出了多个文件。

4

2 回答 2

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 使用的确切样式。不过应该不难。

于 2009-09-11T18:47:39.137 回答
0

我会写一个脚本说: vimdiff_cvs file.cc 这样做:

  1. 在本地存储 file.cc 的差异,删除它,更新到存储库。现在将其复制为 ~/.vimdiff/file.cc.repo。
  2. 通过应用补丁来恢复file.cc
  3. 调用 vimdiff file.cc ~/.vimdiff/file.cc.repo。
于 2011-02-02T07:46:43.547 回答