在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 变体,但是如何做我将这两种变体一个接一个地组合在一起?
答案 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宏,以创建你想要的最终合并。