首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在Vim中重新映射<F5>

无法在Vim中重新映射<F5>
EN

Stack Overflow用户
提问于 2014-11-17 11:14:46
回答 1查看 1.8K关注 0票数 2

我为Vim使用vundle和其他插件。

当我执行:map <F5>时,我看到<F5> :!ruby %<CR>

但是,我已经在~/.vimrc的末尾定义了这些映射,在所有Bundle安装之后:

代码语言:javascript
复制
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>

更新

代码语言:javascript
复制
:verbose map <F5>
   <F5>          :!ruby %<CR>
        Last set from ~/Dropbox/home/.vim/bundle/ruby-menu.vim/plugin/ruby-menu.vim

实际上我不需要红宝石菜单插件,我会把它毁了。顺便问一下,为什么它要重新映射我的映射?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-17 11:56:22

您可以检查这是在哪里定义的。

代码语言:javascript
复制
:verbose map <F5>

它似乎来自红宝石菜单插件中的这条线。该插件应该提供<Plug>-mapping目标,允许您更改映射的键,或者完全禁用映射。你可以针对它提出一个缺陷。

插件覆盖您的映射,因为当插件加载时,您的.vimrc已经完成了处理。

要解决这个问题,您需要在插件加载之后定义映射,使用以下方法之一:

  1. 使用after目录并将重写的映射定义放入~/.vim/bundle/ruby-menu.vim/after/plugin/ruby-menu.vim
  2. 使用插件后的另一个位置(例如~/.vim/after/plugin/mappings-override.vim) (请与:scriptnames核对)
  3. 尝试通过~/.vimrc通过autocmd VimEnter * map <F5> ...重写,从而将实际定义推迟到插件初始化之后。
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26971467

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档