Есть ли способ просмотреть два diff на одной вкладке vim?

Я знаю, что различия в vim являются локальными для страницы, это означает, что у нас может быть только одно различие на одной вкладке, верно? Но что, если я хочу иметь два различия на одной вкладке. Например, один diff находится между двумя верхними окнами, а другой diff — между двумя нижними окнами. Это общая синергия при работе с конфликтом слияния git. У нас может быть разница изменений удаленной фиксации в двух верхних окнах, а также разница между локальным файлом и локальным конфликтным файлом в двух нижних окнах, тогда мы точно знаем, что было изменено в удаленной системе, вызвавшей конфликт, и вручную исправим их.

Как я могу это сделать? Есть ли какой-нибудь плагин?


person weynhamz    schedule 05.07.2012    source источник


Ответы (2)


Участие буфера в diff определяется настройкой буфера 'diff' для всех буферов, видимых на странице вкладки (до четырех буферов). Для реализации того, что вы хотите, потребуется понятие "группы различий", например. :setlocal diff=group1, но что-то подобное сегодня не существует.

Единственный способ добиться этого сегодня без патча для Vim (который я могу придумать) — запустить два отдельных экземпляра Vim на экране с разделенным окном или в сеансе tmux.

person Ingo Karkat    schedule 05.07.2012
comment
Тем не менее, вы можете сделать взлом. - person user2987828; 04.04.2014

Если вы хотите сравнить A.txt с B.txt и A.java с B.java, вы можете сделать:

echo two way diffs separator > separator
cat A.txt separator A.java > A
cat B.txt separator B.java > B
vimdiff A B

Затем введите команды

G:sp|set noscrollbind|normal gg<enter>, чтобы разделить левую панель и отменить привязку прокрутки новой панели,

<c-W>l перейти на правую панель,

G:sp|set noscrollbind|normal gg<enter>, чтобы сделать то же самое с правой панелью.

Конечно, это не идеально: курсоры верхних окон не связаны, и каждый буфер также содержит другой буфер, если вы слишком сильно прокручиваете вниз или вверх.

person user2987828    schedule 04.04.2014