11

安装vim-ruby-debugger后,该插件“劫持”了几个映射。Like <leader>n,或者<leader>t我分别用于 NERDTreeToggle 和 Command-T 查找。

在这个 ruby​​-debugger的硬编码映射中找到了罪魁祸首。

我希望将这些重新映射为<leader>rdX,即:以 *r*uby-*d*ebugger 为前缀。显然,我可以简单地破解插件并更改那里的映射。但这似乎有点太老套了(并且可能会在更新时中断)。

如何取消映射这些映射,以便 vim 再次回退到我自己的映射?这样我就可以重新映射我的 .vimrc 中的命令(它应该在哪里,恕我直言)。

4

2 回答 2

9

首先,我同意 ZyX 的评论,即这是插件中应该修复的问题。请插件作者提供定制。

取消映射没有简单的方法,因为当映射被覆盖时,Vim 不会记住原始映射。您必须记下原始映射(当有问题的插件被暂时禁用时,或在 Vim 脚本中查看它们的定义),然后在加载有问题的插件:map ...重新执行它们(减去它可能有的任何标志,因为这些会导致重新执行时出错)。这不能在 中完成,它是先采购的;我会推荐一个这样的地方。<unique>.vimrc~/.vim/after/plugin/zzzmappings.vim

于 2012-10-30T15:27:33.163 回答
0

我将所有映射保存在after/plugin/keys.vim. 这似乎确保它们始终优先于插件映射。(我使用了一堆插件,似乎已经解决了冲突)(这是我的 nvim 配置

FWIW,我还将文件类型特定的映射保存在同一个文件夹中,但将它们写为autocmd FileType带有<buffer>关键字的命令。例如,下面是一个与bullets.vimToggleCheckbox函数冲突的映射(如果没有,它会在项目符号中添加一个空复选框)

autocmd FileType markdown nnoremap <buffer> <expr> <leader>x (getline('.') =~ '^\s*- \[' ? ':ToggleCheckbox<cr>' : '0/-<space><cr>la[<space>]<space><esc>')
于 2018-04-24T04:28:28.000 回答