используйте vimdiff с файлом diff - PullRequest
42 голосов
/ 28 октября 2008

Как я могу использовать vimdiff для просмотра различий, описанных в файле diff?

Ответы [ 4 ]

54 голосов
/ 28 октября 2008

Вместо использования команды /usr/bin/vimdiff попробуйте следующее:

$ vim file
:vertical diffpatch path/to/diff

(:vert diffpa для краткости.)
Это эквивалентно вызову vimdiff для исходного файла и впоследствии исправленного файла, но vim вызывает patch для временного файла для вас.

Редактировать

Если вы хотите, чтобы diff-режим vim вводился автоматически, используйте это:

$ vim file +'vert diffpa path/to/diff'

, где +command просит vim выполнить «команду». (+123 переходит к строке 123, +/abc переходит к первому совпадению для "abc", все это задокументировано.)

Относительно запроса Кена: если файл diff включает в себя блоки, относящиеся к файлам, отличным от файла, который вы сейчас редактируете, не стоит беспокоиться; vim вызывает исполняемый файл patch внизу, который запрашивает расположение этих таинственно отсутствующих файлов, и вы можете patch просто пропустить эти фрагменты.

3 голосов
/ 29 октября 2008

Исходя из другого направления. Я написал плагин Vim, который показывает изменения, которые были внесены в файл с момента последнего сохранения в формате vimdiff или в унифицированном diff.

Получите это здесь: diffchanges.vim

2 голосов
/ 28 октября 2008

Сделайте копию исходного файла, примените diff и затем

vimdiff original_file patched_file

Вы также можете посмотреть скрипты vim.org , которые были написаны для работы с выводом svn diff. Если вы генерируете свой diff из системы контроля версий, взгляните на vcscommand.vim: CVS / SVN / SVK / git Плагин интеграции .

1 голос
/ 13 ноября 2010

Не могли бы вы рассказать больше о том, почему вы хотите использовать vimdiff для этого?

Например, хотите ли вы визуализировать различия между символами в (унифицированном) файле сравнения? . Если это так, кто-то ответил на мой вопрос о том же с предложением просто запустить emacs на diff и нажать ALT-n, чтобы циклически проходить через фрагменты, красиво выделяя слово или -символы изменений по пути (аналогично vimdiff). Это работает хорошо, но обидно запускать emacs просто для этого. Я знаю только достаточно emacs для того, чтобы это сделать, а затем выйти без исправления патча. :)

В любом случае, ответ emacs дал мне несколько идей. Я уверен, что Vim может быть призван обеспечить лучшую подсветку для файлов сравнения, возможно, что-то более похожее на ediff. Я изучил это некоторое время назад, и кто-то из списка пользователей vim предложил отличное предложение включить google-diff-match-patch . Интерфейс Python может использоваться, например, из ftplugin Python Vim.

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

Для потомков, вот ссылка на другой подобный вопрос (который уже здесь также ссылается).

...