在.vimrc中以静默方式覆盖冲突的映射

Jak*_* M. 5 vim

我有一个映射,.vimrc它与插件中的另一个映射冲突.

nnoremap <leader>p some fancy command here
Run Code Online (Sandbox Code Playgroud)

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

E227: mapping already exists for ,p
Run Code Online (Sandbox Code Playgroud)

如何静默覆盖违规映射?

编辑:

  • 它既不适用 nmap

Jim*_*art 5

这可能会压制警告:

:nnoremap <silent> <leader>p some fancy command here
Run Code Online (Sandbox Code Playgroud)

但我怀疑这个警告实际上并不是来自你的映射.我怀疑冲突映射<unique>是在映射定义的,并且正在映射.如果已存在冲突的地图,<unique>则会发出E227.见:h E227.

挖掘第二个映射源(可能是插件)并查看是否是这种情况.大多数编写良好的插件为您提供了一种使用自己的映射或覆盖它们的方法,通过设置全局标志来完全禁用映射,或者检测到您已将其他映射到特定函数(通过hasmapto)

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

:verbose map <leader>p
Run Code Online (Sandbox Code Playgroud)

这应该有助于追踪来源.