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


121

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

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

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


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


10
:vert diffsplitделает для более традиционного просмотра :vert
различий,

7
Вы можете: установить difffopt + = vertical, чтобы сделать: vert значением по умолчанию.
graywh

3
Также для одновременной прокрутки двух окон: :set scrollbindв обоих.
Дмитрий Сиренко

Не работает, если у меня есть вкладки, как задано в вопросе. Если я это сделаю, :diffsplitя получу два подключенных буфера.
Эрик

25

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

:windo diffthis


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

2
Но как мне перейти с двух вкладок на вертикальное разделение?
Эрик

1

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

:buffers

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

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

:sb 4

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

:vertical sb 4

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

:windo diffthis

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

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