Сравнение двух файлов в Vim

63

Можно ли одновременно просматривать два файла в Vim? Если да, как я могу настроить свой редактор для этого, и есть ли способ diffмежду двумя файлами в Vim?

Я знаю команды :nextи :prev, но это не то, что мне нужно. Было бы неплохо просмотреть два файла в тандеме.

Зайд
источник

Ответы:

43

Откройте вид рядом друг с другом:

Ctrl+w v

Перемена между ними:

Ctrl+w h or l

Извлекает vimdiff команду, часть VIM пакета, если вы хотите дифф-подобный вид:

vimdiff file1.txt file2.txt
maxschlepzig
источник
2
Есть ли способ заблокировать прокрутку между двумя окнами?
Заид
1
Да, проверьте vimdoc.sourceforge.net/htmldoc/options.html#%27scrollbind%27 - с vimdiff это значение по умолчанию.
maxschlepzig
1
Я обычно использую «diff file1 file2» в командной строке.
Джангофан
2
Использование @Zaid vimdiff file1.txt file2.txt(см. Ниже)
Эдуардо Куомо
42

Вы также можете открыть vim в режиме разделенного экрана с -Oопцией: -

vim -O file1 [file2 ...]

Чтобы затем включить режим сравнения, вам нужно запустить :diffthisкоманду на каждой панели.

Другой вариант использования, если у вас уже есть один файл, открытый в vim, и вы хотите открыть его и сравнить с другим. Затем вы можете использовать следующие команды vim:

:vs otherfile (open otherfile in vertical split screen)
:diffthis (turn on diff mode in original file)
Ctrl+w l  (swap to newly opened file)
:diffthis (turn on diff mode in opened file)

Затем вы можете отключить режим diff на каждой панели с помощью команды vim :diffoff.

РЕДАКТИРОВАТЬ
И другой стандартный, который не был упомянут: -

vim -d file1 [file2 ...]

Это эквивалентно vimdiffпрямому звонку.

Алекс Лич
источник
11
:windo :diffthisможет использоваться вместо последних трех команд.
Бернхард
2

Или просто откройте первый файл в VIM, а затем :vert diffsplit file2 :vertразделите его по вертикали.

diffsplit делает diff, разделяет файлы и прокручивает их блокирует

Dustin
источник