2012-10-07 66 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的地方。