Использовать vimdiff с файлом diff

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

Ответ 1

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

$ vim file
:vertical diffpatch path/to/diff

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

Изменить

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

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

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

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

Ответ 2

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

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

Ответ 3

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

vimdiff original_file patched_file

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

Ответ 4

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

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

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

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

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