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 にパイプして、これらの 2 つの列を 2 つの並列バッファーに表示し、vimdiff のすべての差分強調表示の利点と共に表示する方法はありますか?

私は cvsvimdiff.vim などのツールを知っていますが、それらの問題は、一度に 1 つのファイルに対してしか機能しないのに対し、cvs diff の出力には複数のファイルがリストされることです。

4

2 に答える 2

1

そのテキストを Vim バッファーに入れたら、自分で簡単に 2 つのバッファーに分割できます。サンプル入力は 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 の diff をローカルに保存し、削除して、リポジトリに更新します。~/.vimdiff/file.cc.repo としてコピーします。
  2. パッチを適用してfile.ccを復元する
  3. vimdiff file.cc ~/.vimdiff/file.cc.repo を呼び出します。
于 2011-02-02T07:46:43.547 に答える