我使用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>
Run Code Online (Sandbox Code Playgroud)
此外,如果我在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
Run Code Online (Sandbox Code Playgroud)
实际上我不需要ruby-menu插件,会丢弃它.顺便问一下,为什么它重新映射我的映射?
您可以通过以下方式查看定义的位置
:verbose map <F5>
Run Code Online (Sandbox Code Playgroud)
它似乎来自ruby-menu插件中的这一行.该插件应该提供 - <Plug>映射目标,允许您更改映射的键,或完全禁用映射.您可以针对它提交缺陷.
该插件会覆盖您的映射,因为在插件加载时,您的.vimrc已经完成处理.
为了解决方法,您需要定义映射后的插件加载,用这些方法之一:
~/.vim/bundle/ruby-menu.vim/after/plugin/ruby-menu.vim~/.vim/after/plugin/mappings-override.vim插件之后的其他位置(例如)(检查:scriptnames)~/.vimrcvia 尝试覆盖autocmd VimEnter * map <F5> ...,从而延迟实际的定义,直到插件初始化为止