Смешивание вертикальных и горизонтальных разбиений в vim из командной строки - PullRequest
2 голосов
/ 09 февраля 2010

Название действительно говорит обо всем. Существует опция -O для открытия разделений по вертикали и -o для горизонтальных, но попытка смешать их, похоже, не работает.

Моя цель - использовать g / vimdiff для трехстороннего слияния файлов в Mercurial способом, более похожим на kdiff3. Этот метод будет иметь 3 файла, которые будут объединены, разделены на 3 вертикальные вкладки в верхней части (моя локальная версия, другая версия файла, с которым я объединяю его, и базовая версия между ними), в то время как «выход», или результатом слияния является большая горизонтальная вкладка, натянутая по всей нижней части.

Ответы [ 2 ]

2 голосов
/ 09 февраля 2010

Это немного глупо, но работает:

vim -c "wincmd J" -O base diff1 diff2

(там дословно-W)

Возможно, есть более элегантный метод, но он просто загружает их все по вертикали, а затем перемещает активный (первый) вниз.

1 голос
/ 09 февраля 2010

Несмотря на то, что Vim позволяет вам предоставлять более 2 файлов для диффузии, он не особенно хорошо работает для выполнения более чем двухсторонней разницы.

В любом случае, вы правы, что не можете указать разные способы разделения, используя -O и -o. Лучшее, что вы получите, это либо поиск сценария для запуска (через -S 3way.vim), либо использование --cmd аргументов для настройки разделений и изменения того, какие буферы отображаются в этих разделениях.

Потенциальный 3way.vim, при условии, что вы вызываете vim, так как vim -S 3way.vim localfile otherversion baseversion merged будет

botright vsplit +b2  " Opens a split and focuses otherversion
botright vsplit +b3  " Opens a split and focuses baseversion
botright split +b4   " Opens a split and focuses merged
wincmd =             " Resize all windows so they share space equally
...