Как я могу использовать vimdiff для просмотра различий, описанных в файле diff?
используйте vimdiff с файлом diff
Ответы (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
просто пропустить эти фрагменты.
:vert diffpatch - !git diff file
? (Я знаю, что для git diff
есть лучшие решения, но мне любопытно, возможно ли это вообще)
- person mwcz; 07.06.2013
С другой стороны. Я написал плагин Vim, который показывает изменения, внесенные в файл с момента последнего сохранения, в формате vimdiff или унифицированном формате diff.
Получите это здесь: diffchanges.vim
Сделайте копию исходного файла, примените разницу, а затем
vimdiff original_file patched_file
Вы также можете посмотреть сценарии vim.org, написанные для иметь дело с выводом svn diff. Если вы генерируете различие из системы контроля версий, взгляните на vcscommand .vim: плагин интеграции CVS / SVN / SVK / git.
Не могли бы вы рассказать подробнее, почему вы хотите использовать для этого vimdiff?
Например, хотите ли вы визуализировать посимвольные различия в (унифицированном) файле различий?. Если да, то кто-то ответил на мой вопрос о то же самое с предложение просто запустить emacs на diff и нажать ALT-n
, чтобы циклически переключаться между фрагментами, красиво выделяя по ходу слова или символы изменения (аналогично vimdiff). Он работает хорошо, но запускать emacs только для этого - обидно. Я знаю только достаточно emacs, чтобы сделать это, а затем выйти, не испортив патч. :)
Во всяком случае, ответ emacs дал мне несколько идей. Я уверен, что Vim можно уговорить улучшить подсветку файлов diff, может быть, что-то вроде ediff. Я изучал это некоторое время назад, и у кого-то из списка пользователей vim было отличное предложение включить google-diff-match-patch. Интерфейс Python можно использовать, например, из ftplugin Python Vim.
Извините за использование «ответа» для ответа, когда это может быть не лучший ответ, форматирование для «добавить комментарий» было слишком ограниченным для того, что я хотел сказать.
Для потомков здесь ссылка на другой аналогичный вопрос (который уже ссылки здесь тоже).