Различия между двумя вкладками в Vim

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

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

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


person davetapley    schedule 08.07.2009    source источник
comment
что за команда tabe?   -  person hhafez    schedule 08.07.2009
comment
@hhafez - открыть новый буфер в новой вкладке   -  person Rook    schedule 08.07.2009
comment
Это сокращение от: tabedit, иначе: tabnew.   -  person TSomKes    schedule 08.07.2009


Ответы (4)


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

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

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

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

person Jan    schedule 08.07.2009
comment
Fwiw, MacVim, похоже, не имеет этого по умолчанию, но я думаю, вы должны иметь возможность зайти в терминал, набрать vimdiff file1.txt file2.txt и вырубить себя. - person ruffin; 23.03.2012
comment
Это потрясающе. Части edit fileN могут быть заменены простой вставкой из буфера, что позволяет вам различать два фрагмента текста, не вставляя каждый в файл tmp (что-то, что позволяет объединить, но инструменты визуального сравнения на Mac отсутствуют). У меня он работал в MacVim из коробки. - person yshavit; 15.11.2013

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

person joeslice    schedule 08.07.2009
comment
:vert diffsplit обеспечивает более традиционный просмотр различий, чем без :vert - person ephemient; 09.07.2009
comment
Вы можете: установить difffopt + = vertical, чтобы сделать: vert значением по умолчанию. - person graywh; 31.10.2009
comment
Кроме того, для одновременной прокрутки двух окон: :set scrollbind в обоих. - person Dmytro Sirenko; 29.12.2012
comment
Не работает, если у меня есть вкладки, как задано в вопросе. Если я сделаю :diffsplit, я получу два подключенных буфера. - person erik; 28.04.2015

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

:windo diffthis

person A B    schedule 24.05.2013
comment
используйте :diffoff, чтобы выключить режим сравнения - person A B; 25.05.2013
comment
Но как мне перейти с двух вкладок на вертикальное разделение? - person erik; 28.04.2015

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

:buffers

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

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

:sb 4

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

:vertical sb 4

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

:windo diffthis

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

:windo diffoff
person snap    schedule 01.03.2018