gpt4 book ai didi

vim - 无法在 Vim 中重新映射

转载 作者:行者123 更新时间:2023-12-01 22:34:21 27 4
gpt4 key购买 nike

我使用 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 插件,打算把它扔掉。顺便说一句,为什么它会重新映射我的映射?

最佳答案

你可以通过

检查这是在哪里定义的
:verbose map <F5>

好像来自this line在 ruby​​-menu 插件中。该插件应该提供 <Plug> - 允许您更改映射键或完全禁用映射的映射目标。您可以针对它提出缺陷。

插件会覆盖您的映射,因为在插件加载时,您的 .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> ... ,从而将实际定义延迟到插件初始化之后

关于vim - 无法在 Vim 中重新映射 <F5>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26971467/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com