2012-10-07 68 views
9

安装vim-ruby-debugger后,该插件“劫持”了几个映射。像<leader>n<leader>t我分别用于NERDTreeToggle和Command-T查找。覆盖插件的重新映射?

罪魁祸首在hardcoded mappings in this ruby-debugger

我宁愿将这些重新映射为<leader>rdX,即:前缀为* r * uby- * d * ebugger。很明显,我可以简单地修改插件并更改那里的映射。但是这似乎有点太过分了(并且可能会在更新中断)。

我该如何取消映射这些映射,这样vim才会回退到我自己的映射中呢?所以我可以重新映射我的.vimrc中的命令(它应该是,恕我直言)。

+0

使用git,'git pull'不会让你的改变消失,而是进行合并。 – ZyX

+2

更好的是,在github上分发这个仓库,添加一个自定义映射的可能性(通过将'noremap b ...'更改为'执行'nnoremap'get(g :,'ruby_debugger_map_toggle_breakpoint',' b' )'...')然后做一个拉取请求。使用建议的更改映射将使用'g:ruby_debugger_map_toggle_breakpoint'变量进行自定义。 – ZyX

+2

第二种解决方案比使用某种解决方法要好得多(比如把你不应该覆盖的映射放到'〜/ .vim/after/plugin/mappings.vim',第一个建议的解决方案或者使用某种[ map.maparg'](https://bitbucket.org/ZyX_I/frawor/src/a09e101e4a9a55e1bbbf6602a1ef2c4fcd839631/doc/frawor.txt#cl-731)放在同一个'〜/ .vim/after/plugin/mappings.vim'目录保存,然后'map.map'再次映射它们,但是到' rd *',并使用普通的NoredTree插件的'noremap'命令。我相信你不是唯一需要自定义映射能力的人。 – ZyX

回答

6

首先,我同意ZyX的评论,这是一个应该修复的插件问题。请要求插件作者提供自定义。

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