当用作Git的合并工具时,vimdiff 中与 kdiff3 的“Select Lines(s) From A/B/C”等效的是什么?在 kdiff3 中是否有类似Ctrl+ 1/ 2/的快捷方式?3
1 回答
根据 vimdiff 的Vim 参考手册部分,在 vimdiffCtrl中没有具有+ 1/ 2/全部功能的内置命令3。我所说的“完整功能”的意思是,在 kdiff3 中,您可以按Ctrl+ 2、Ctrl+ 3、Ctrl+1的顺序执行命令,而在合并版本中,您最终会得到缓冲区 B 中的差异行,然后是缓冲区 C 中的行,然后是来自缓冲区 A 的行。
但是,有一个命令用于执行 kdiff3 中可用功能的更有限版本。如果您只想使用其中一个输入文件中的行,则该命令[count]
do可用,[count]
通常是1, 2,或者3取决于您要从中提取行的 vim 缓冲区。(do代表“差异获取”。)
例如,如果您有以下合并情况: 那么您可以将光标移动到底部缓冲区中的合并冲突处,然后输入1do您想要“monkey”、2do“pig”还是3do“whale”。
如果在与 vimdiff 合并时确实需要从多个缓冲区中抓取行,那么我的建议是将 Git 配置选项 merge.conflictstyle 设置为 diff3 ( git config merge.conflictstyle diff3
) 以便共同祖先出现在文件的合并缓冲区中,如图所示上面的截图。然后只需使用 vim 命令将这些行移动到您喜欢的位置,并删除差异符号和任何未使用的行。