Порівняння двох файлів у 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" у командному рядку.
djangofan

2
@Zaid Use vimdiff file1.txt file2.txt(див. Нижче)
Едуардо Куомо

42

Ви також можете відкрити vim у режимі розділеного екрана з -Oможливістю: -

vim -O file1 [file2 ...]

Щоб потім увімкнути режим diff, потрібно запустити :diffthisкоманду в кожній області.

Інший сценарій використання - це якщо у вас вже відкритий один файл in 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.

EDIT
І інший стандартний, про який не згадували: -

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.