当使用 vimdiff 复制更改时,热键 "dp"(diff put) 与 vim-fugitive 有映射冲突

The hotkey "dp"(diff put) has a mapping conflict with vim-fugitive, when copying changes with vimdiff

比较文件时,我喜欢使用 vimdiff(或 vim -d),我知道使用 vimdiff 复制更改的推荐方法是:

]c               - advance to the next block with differences
[c               - reverse search for the previous block with differences
do (diff obtain) - bring changes from the other file to the current file
dp (diff put)    - send changes from the current file to the other file

我也知道

所有这些命令都可以正常工作(包括:diffput),但是当我输入dp时,没有任何变化并且会产生错误声音。

我认为这是因为与 vim-fugitive 的热键映射冲突,后者有一个热键 dp:

dp    :Git! diff (p for patch; use :Gw to apply)
dp    :Git add --intent-to-add (untracked files)

如何解决这个问题?谢谢。

您仍然可以通过:normal! dp调用内置映射。

如果你多次需要这个,最好取消定义原来的缓冲区本地映射:

:nunmap <buffer> dp

然而,正如@Kent 评论的那样,逃亡者的 dp 映射仅在 预览 window 中有效(cp. :h fugitive-:Gstatus) .由于您应该使用正常的 windows 进行比较和合并,因此不应有重叠。

我遇到了同样的问题。我的错误是 map p 也在 operator-pending 模式下映射 p。你可以尝试做一个ounmap p。就我而言,它与 miniyank plugin

有关