Различия двух вкладок в Vim

121

Сценарий: я открыл Vim и вставил текст. Я открываю вторую вкладку :tabeи вставляю туда другой текст.

Цель: мне нужна третья вкладка с выводом, эквивалентным записи обоих текстов в файлы и их открытию с помощью vimdiff.

Ближайшее, что я могу найти, - это «сравнить текущий буфер с файлом», но не diffдва открытых, но несохраненных буфера.

davetapley
источник
1
что за команда tabe?
hhafez 08
1
@hhafez - открыть новый буфер в новой вкладке
Ладья
3
Это сокращение от: tabedit, иначе: tabnew.
TSomKes 08

Ответы:

188

Я предлагаю открыть второй файл на той же вкладке вместо нового.

Вот что я обычно делаю:

:edit file1
:diffthis
:vnew
:edit file2
:diffthis

Команда :vnewразделяет текущий вид по вертикали, чтобы вы могли открыть там второй файл. Затем к каждому виду применяется команда :diffthis(или короткая :difft:).

январь
источник
1
Fwiw, MacVim, похоже, не имеет этого по умолчанию, но я думаю, что вы должны иметь возможность перейти к терминалу, ввести vimdiff file1.txt file2.txtи вырубить себя.
ruffin
3
Это потрясающе. В edit fileNчасти может быть заменена только вставить из буфера, который позволяет дифф два куска текста без вставки каждого в файл TMP (то , что MELD позволяет сделать, но визуальные инструменты дифференциалов на Mac не хватают). У меня он работал в MacVim из коробки.
yshavit
38

Я бы посоветовал попробовать : diffthis или : diffsplit

joeslice
источник
10
:vert diffsplitделает для более традиционного просмотра :vert
различий,
7
Вы можете: установить difffopt + = vertical, чтобы сделать: vert значением по умолчанию.
graywh
3
Также для одновременной прокрутки двух окон: :set scrollbindв обоих.
Дмитрий Сиренко
Не работает, если у меня есть вкладки, как задано в вопросе. Если я это сделаю, :diffsplitя получу два подключенных буфера.
Эрик
25

Когда у вас есть два файла, открытых с вертикальным разделением, запустите

:windo diffthis

AB
источник
8
используйте :diffoffдля отключения режима сравнения
AB
2
Но как мне перейти с двух вкладок на вертикальное разделение?
Эрик
1

Содержимое всех вкладок находится внутри буферов. Посмотрите на буферы:

:buffers

Найдите правильный номер для содержимого, которое должно отличаться от содержимого текущей вкладки.

Откройте буфер внутри текущей вкладки (например, буфер номер 4)

:sb 4

Или сделать для вертикального обзора:

:vertical sb 4

Затем вы можете просто различать контент с помощью

:windo diffthis

Если вы закончили анализ различий, вы можете ввести:

:windo diffoff
щелчок
источник