Select 行的 Vimdiff 等价物

Vimdiff equivalent for Select Lines

当用作 mergetool for Git 时,vimdiff 中与 kdiff3 的 "Select Lines(s) From A/B/C" 等效的是什么?有没有像 Ctrl+1/2/3[ 这样的快捷方式=21=] 在 kdiff3 中?

基于Vim Reference Manual section for vimdiff,没有内置命令具有Ctrl+1/的全部功能2/3 在 vim 差异中。 "full functionality" 的意思是,在 kdiff3 中,您可以执行命令 Ctrl+2Ctrl+3, Ctrl+1 的顺序,在合并版本中结束从缓冲区 B 的差异行开始,然后是缓冲区 C 的行,然后是缓冲区 A 的行。

但是,有一个命令可以执行 kdiff3 中可用功能的更有限版本。如果您只想使用一个输入文件中的行,则可以使用命令 [count]do,其中 [count] 通常是 123,具体取决于哪个 vim 缓冲区你想从中拉线。 (do代表"diff obtain"。)

例如,如果您有以下合并情况: 然后你可以将光标移动到底部缓冲区中的合并冲突并键入 1do 如果你想要 "monkey", 2do 如果你想要 "pig",或者 3do 如果你想要 "whale".

如果在与 vimdiff 合并时确实需要从多个缓冲区中抓取行,那么我的建议是将 Git 配置选项 merge.conflictstyle 设置为 diff3(git config merge.conflictstyle diff3) 这样共同的祖先出现在文件的合并缓冲区中,如上面的屏幕截图所示。然后使用 vim 命令根据自己的喜好移动行并删除差异符号和任何未使用的行。