如何让vimdiff显示来自cvs diff的输出 - 并排显示

时间:2009-09-11 12:32:08

标签: vim diff cvs vimdiff

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

2 个答案:

答案 0 :(得分:1)

在Vim缓冲区中有了该文本后,您可以轻松地将其分成两个缓冲区。看起来您的示例输入分割为50个字符。

因此,使用<C-v>可视化阻止突出显示diff的一半,剪切它,将其粘贴到新缓冲区中,删除尾随空格和>分隔符,然后就可以了。或者编写一个函数来执行此操作,类似于此(假设拆分始终为50):

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

可能必须变得更强大,我不熟悉CVS使用的输出的确切样式。虽然不应该很难。

答案 1 :(得分:0)

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

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