используйте vimdiff с файлом diff

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


person user14437    schedule 28.10.2008    source источник
comment
Я сообщил о запросе функции.   -  person Hi-Angel    schedule 19.10.2018


Ответы (4)


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

$ vim file
:vertical diffpatch path/to/diff

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

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

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

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

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

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

person ephemient    schedule 28.10.2008
comment
Ницца! Но, может быть, вам стоит предупредить о риске побочных эффектов, если файл содержит различия для других файлов? - person Ken; 29.10.2008
comment
Это отлично подходит для одного файла. Спасибо! Я не знал о diffpatch. - person Adam Monsen; 13.11.2010
comment
Есть ли способ сделать это, не сохраняя файл diff на диск? Что-то вроде: :vert diffpatch - !git diff file? (Я знаю, что для git diff есть лучшие решения, но мне любопытно, возможно ли это вообще) - person mwcz; 07.06.2013

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

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

person Jeremy Cantrell    schedule 29.10.2008
comment
Я думаю, что лучше сохранять пораньше, почаще и использовать Gundo: sjl.bitbucket.org/gundo.vim вместо этого. - person Andrei Sosnin; 15.09.2011

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

vimdiff original_file patched_file

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

person Ken    schedule 28.10.2008

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

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

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

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

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

person Adam Monsen    schedule 12.11.2010