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


63

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

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

Ответы:


43

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

Ctrl+w v

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

Ctrl+w h or l

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

vimdiff file1.txt file2.txt

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, разделяет файлы и прокручивает их блокирует

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.