我为Vim使用vundle和其他插件。
当我执行: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实际上我不需要红宝石菜单插件,我会把它毁了。顺便问一下,为什么它要重新映射我的映射?
发布于 2014-11-17 11:56:22
您可以检查这是在哪里定义的。
:verbose map <F5>它似乎来自红宝石菜单插件中的这条线。该插件应该提供<Plug>-mapping目标,允许您更改映射的键,或者完全禁用映射。你可以针对它提出一个缺陷。
插件覆盖您的映射,因为当插件加载时,您的.vimrc已经完成了处理。
要解决这个问题,您需要在插件加载之后定义映射,使用以下方法之一:
~/.vim/bundle/ruby-menu.vim/after/plugin/ruby-menu.vim中~/.vim/after/plugin/mappings-override.vim) (请与:scriptnames核对)~/.vimrc通过autocmd VimEnter * map <F5> ...重写,从而将实际定义推迟到插件初始化之后。https://stackoverflow.com/questions/26971467
复制相似问题