如何在emacs的emerge中组合冲突的两个变体?

时间:2012-01-03 09:50:47

标签: emacs

在Emacs中使用 emerge ,我有一个这样的会话:

<<<<<<< variant A
            522ADC9C14B2FD9D00F56BAD /* close_test_button.png in Resources */,
            522ADC9D14B2FD9D00F56BAD /* close_test_button@2x.png in Resources */,
            522ADCA014B2FDB100F56BAD /* test_failed.png in Resources */,
            522ADCA114B2FDB100F56BAD /* test_failed@2x.png in Resources */,
>>>>>>> variant B
            EC1633C014B2F3E3004B52E7 /* arrow.png in Resources */,
            EC1633C114B2F3E3004B52E7 /* arrow@2x.png in Resources */,
            EC1633C214B2F3E3004B52E7 /* groups.png in Resources */,
            EC1633C314B2F3E3004B52E7 /* groups@2x.png in Resources */,
####### Ancestor
======= end

我可以通过在键盘上点击 a b 来选择 A B 变体,但是如何做我将这两种变体一个接一个地组合在一起?

2 个答案:

答案 0 :(得分:7)

只需在emerge缓冲区中使用 C-h m 即可查看当前模式的帮助。与大多数模式一样,Emerge次要模式在此帮助文本中显示其键绑定。

该帮助表明您可以插入变体A或B的内容: i a i b ,因此您可以使用该功能插入当前未选择的任何变体。

您还可以从默认的“快速”模式切换到“编辑”模式以直接编辑合并文本。在编辑模式下使用 Cc Cc f 返回快速模式(因为在编辑模式下,所有emerge命令都需要以抄送 抄送)。

Emerge手册有更多细节:
M - : (info "(emacs) Emerge") RET

特别是,它解释了 x c 绑定的行为,它使用预定义的模板字符串在一个步骤中组合了两个变体:
M - : (info "(emacs) Combining in Emerge") RET

默认模板使用C预处理器条件语法,因此您几乎肯定想要覆盖它。您可以通过“弹出选项”菜单或emerge-set-combine-template设置模板。有关模板语法,请参阅:
C-h v emerge-combine-versions-template RET

答案 1 :(得分:1)

使用快捷方式:

x-c   (combine the two versions of the difference)

这将按顺序插入两个冲突区域,产生类似于:

的输出
vvvvvvvvvvvvvvvvvvvv
#ifdef NEW
522ADC9C14B2FD9D00F56BAD /* close_test_button.png in Resources */,
522ADC9D14B2FD9D00F56BAD /* close_test_button@2x.png in Resources */,
522ADCA014B2FDB100F56BAD /* test_failed.png in Resources */,
522ADCA114B2FDB100F56BAD /* test_failed@2x.png in Resources */,
#else /* not NEW */
EC1633C014B2F3E3004B52E7 /* arrow.png in Resources */,
EC1633C114B2F3E3004B52E7 /* arrow@2x.png in Resources */,
EC1633C214B2F3E3004B52E7 /* groups.png in Resources */,
EC1633C314B2F3E3004B52E7 /* groups@2x.png in Resources */,
#endif /* not NEW */
^^^^^^^^^^^^^^^^^^^^

从那里,你可以进入编辑模式(快捷键:'e')根据需要删除#ifdef宏,以创建你想要的最终合并。