Как получить vimdiff для отображения вывода из cvs diff - рядом - PullRequest
1 голос
/ 11 сентября 2009

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 ]

1 голос
/ 11 сентября 2009

Получив этот текст в буфере Vim, вы можете легко разделить его на два буфера самостоятельно. Похоже, ваш пример ввода разделить на 50 символов.

Так что используйте <C-v>, чтобы визуально заблокировать выделение половины различий, вырезать ее, вставить в новый буфер, удалить конечный пробел и символы-разделители >, и все. Или напишите функцию, чтобы сделать это, что-то вроде этого (которое предполагает, что разделение всегда на 50):

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

Возможно, нужно сделать более устойчивым, я не знаком с точным стилем вывода CVS. Хотя не должно быть трудно.

0 голосов
/ 02 февраля 2011

Я бы написал скрипт, скажем: vimdiff_cvs file.cc который делает это:

  1. Храните diff из file.cc локально, удаляйте его, обновляйте до репозитория. Теперь скопируйте его как ~ / .vimdiff / file.cc.repo.
  2. Restorefile.cc, применив патч
  3. Вызовите vimdiff file.cc ~ / .vimdiff / file.cc.repo.
...