Я использую vim в качестве основного редактора.
Я также хотел бы использовать vim для сравнения файлов и изменения файлов при выполнении сравнения, чтобы исправить простые изменения (а не большинство методов сравнения, представляющих собой цикл diff / fix / diff / fix).
Кроме того, существуют простые способы интеграции vim в инструменты сравнения, используемые инструментами / сайтами контроля версий (я специально думаю о git, но я уверен, что другие люди будут заинтересованы в интеграции с другими инструментами / сайтами контроля версий).
:Gdiff
и:Gvdiff
обе команды позволяют вам видеть различие текущего буфера, если ваш текущий буфер управляется git. Это также помогает вам разрешать конфликты в макете с тремя окнами, когда у вас есть конфликты слияния в некоторых файлахvd () { diff $@ > /dev/null ; if [[ $? -eq 1 ]] ; then ; vimdiff -c 'windo set syntax=off' $@ ; fi ; }
и я вызываю ее с помощьюvd file1 file2
. Он используетсяdiff
для определения того, отличаются ли файлы, и открывается только в томvimdiff
случае, если это так. Иначе я остаюсь в скорлупе. Я также отключаю подсветку синтаксиса в Vim, потому что нахожу это отвлекающим при разнице. Работает только с двумя файлами.Ответы:
В vim встроена эта функциональность (с правильным флагом командной строки).
Это открывает каждый файл в представлении и выделяет различия.
Любой идентичный код
folded
отсутствует, поэтому вам не нужно смотреть на идентичный код или пролистывать огромные куски идентичного кода.Но есть также приложение-оболочка,
vimdiff
которое корректно вызывает vim с правильными флагами.Если вы используете git, вы можете настроить внешний инструмент сравнения. Так что легко настроить vimdiff как инструмент diff для git.
При использовании vimdiff вы можете редактировать любую сторону, а подсветка diff будет идти в ногу, чтобы показать вам различия.
Примечание: при редактировании из git diff. Если вы попытаетесь отредактировать сохраненную в репозитории версию файла, ваши изменения будут отменены при выходе (git не доверяет вам оригинал, поэтому вы копируете копию tmp), но вы можете отредактировать локальную копию для вашего сердца и сохранить его поверх текущей версии.
Некоторые основные команды, которые полезны в
vimdiff
Другие настройки vim, которые я использую для работы с выделением с помощью vimdiff
Это отключает подсветку битов кода, которые были изменены. Таким образом, измененная строка подсвечивается, чтобы я мог заметить изменения, но реальный текст, который изменился, выделяется в строке (так как он не выделен).
источник
:diffthis
команду для запуска diff, когда Vim уже запущен.git config --global diff.tool vimdiff
, какgit diff
все показывает, как будто я ничего не меняю.git difftool
Если вы редактируете открытый файл и хотите сравнить его с другим файлом, не закрывая текущий:
Откройте новый файл на разделенном экране:
Для вертикального разделения:
или горизонтальное разделение:
Переключить курсоры на другой разделенный экран:
Вызвать «режим сравнения» в файле:
Переключитесь на другой файл и вызовите «режим сравнения»:
Чтобы отключить «режим сравнения»:
источник
:windo diffthis
тожеВы можете поместить нижеуказанную настройку в
.gitconfig
файл, найденный в%homepath%
(или%userprofile%
) каталоге текущего зарегистрированного пользователя:Это позволит инструменту git bash начать использовать vimdiff в качестве внешнего инструмента сравнения.
источник
Вот мой конфиг git:
https://github.com/tracyone/dotfiles/blob/master/.gitconfig
источник
Я вижу только три ситуации, чтобы использовать vim в качестве difftool. Они кратко описаны ниже:
Для git difftool добавьте в свой файл следующее
~/.gitconfig
:Чтобы открыть vim как diff-инструмент для двух файлов, вы можете сделать следующее:
Чтобы получить представление diff для буферов, которые в данный момент активны, то есть для всех буферов, которым назначено окно на текущей активной вкладке, вы можете сделать следующее:
Для получения дополнительной информации см.
:h diff
источник
вот что я делаю:
:vnew
(чтобы оба окна располагались рядом) или:new
(чтобы окна были сверху и снизу). если у вас есть определенный файл, который нужно открыть во втором окне, вы можете указать путь следующим образом::vnew /path/to/secondfile.txt
вот пользовательская функция, которая есть в моем
~/.vimrc
:источник
:diffthis
иdiffoff!
вам не нужно устанавливать все параметры diff самостоятельно (например, для курсора также устанавливается diffmode)