我使用Vundle和Vim的其他一些插件
当我执行:map <F5>
时,我看到<F5> :!ruby %<CR>
但是我在所有~/.vimrc
这些映射之后的Bundle
结尾定义了这些映射:
imap <F5> <Esc><Esc>:w<CR>:!ruby %<CR>
nmap <F5> <Esc><Esc>:w<CR>:!ruby %<CR>
omap <F5> <Esc><Esc>:w<CR>:!ruby %<CR>
cmap <F5> <Esc><Esc>:w<CR>:!ruby %<CR>
vmap <F5> <Esc><Esc>:w<CR>:!ruby %<CR>
smap <F5> <Esc><Esc>:w<CR>:!ruby %<CR>
xmap <F5> <Esc><Esc>:w<CR>:!ruby %<CR>
map <F5> <Esc><Esc>:w<CR>:!ruby %<CR>
此外,如果我在Vim :map <F5> <Esc><Esc>:w<CR>:!ruby %<CR>
中执行,它的工作方式应该如此。好像我在.vimrc中的映射被忽略了。
为什么?如何重新映射<F5>
?
更新:
:verbose map <F5>
<F5> :!ruby %<CR>
Last set from ~/Dropbox/home/.vim/bundle/ruby-menu.vim/plugin/ruby-menu.vim
实际上我不需要ruby-menu插件,会丢弃它。顺便问一下,为什么它会重新映射我的映射?
答案 0 :(得分:5)
您可以通过
查看定义的位置:verbose map <F5>
它似乎来自ruby-menu插件中的this line。该插件应提供<Plug>
- 映射目标,允许您更改映射的键,或完全禁用映射。你可以针对它提出缺陷。
该插件会覆盖您的映射,因为在插件加载时,您的.vimrc已经完成处理。
要解决此问题,您需要使用以下方法之一定义插件加载后的映射:
~/.vim/bundle/ruby-menu.vim/after/plugin/ruby-menu.vim
~/.vim/after/plugin/mappings-override.vim
)(使用:scriptnames
检查)~/.vimrc
通过autocmd VimEnter * map <F5> ...
覆盖,从而将实际定义推迟到插件初始化之后