从命令行混合vim中的垂直和水平分割

时间:2010-02-09 13:59:27

标签: merge diff split vim

标题真的说明了一切。有-O选项用于垂直打开分割,-o用于水平分割,但尝试混合它们似乎不起作用。

我的目标是使用g / vimdiff以类似于kdiff3的方式在mercurial中进行3向文件合并。这个方法将要合并的3个文件拆分为顶部的3个垂直选项卡(我的本地版本,我合并的文件的另一个版本,以及两者之间的基本版本),而“输出”,或合并的结果,是一个横跨底部的大型水平标签。

2 个答案:

答案 0 :(得分:2)

这有点笨拙,但它有效:

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

(那是一个逐字的控制-W那里)

也许有一个更优雅的方法,但这只是将它们全部加载为垂直方式,然后将活动(第一个)移动到底部。

答案 1 :(得分:1)

虽然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