在 .vimrc 中静默地覆盖冲突映射

11

我的.vimrc文件中的一个映射与插件中的另一个映射产生了冲突。

nnoremap <leader>p some fancy command here

运行VIM时,我收到一个警告:

E227: mapping already exists for ,p
如何在不提示的情况下覆盖有问题的映射? 编辑:
  • 它与nmap一起无法正常工作

编辑:
  • 它与nmap一起无法正常工作

直接使用 nmap 怎么样? - yakiang
remap设置为true。 - Claudio
“remap”是递归用的,根据文档,建议将其保留为“no”值。此外,它并不起作用。 - Jakub M.
1个回答

10

这可能会消除警告:

:nnoremap <silent> <leader>p some fancy command here

但我怀疑警告实际上并不是来自于你的映射。我怀疑冲突映射是用 <unique> 定义的,并且在你的映射之后被映射。如果已经存在冲突的映射,<unique> 将会发出 E227 警告。参见 :h E227

查找第二个映射的来源(可能是插件)并确认这是否为此情况。大多数写得好的插件都会提供一种方式来使用您自己的映射或覆盖他们的映射,通过设置一个全局标志来禁用映射,或者检测您是否将某些其他内容映射到特定功能(通过hasmapto

您可以通过以下方式查看哪个插件/脚本设置了映射:

:verbose map <leader>p

那应该有助于追踪源头。


没有静默工作,但我追踪到了源代码并禁用了有问题的插件。 - Jakub M.
只是好奇,冒犯的插件是什么? - Jim Stewart

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接