2

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

実はruby-menuプラグインは要らないので捨てます。ところで、なぜ私のマッピングを再マッピングするのですか?

4

1 に答える 1

7

これが定義された場所を確認できます

:verbose map <F5>

ruby-menu プラグインのこの行からのようです。そのプラグインは<Plug>、マップされたキーを変更したり、マッピングを完全に無効にしたりできるようにする -mapping ターゲットを提供する必要があります。それに対して欠陥を提出することができます。

プラグインがロードされるまでに .vimrc の処理がすでに終了しているため、プラグインはマッピングをオーバーライドします。

回避するには、プラグインのロードに次のいずれかの方法でマッピングを定義する必要があります。

  1. afterディレクトリを使用して、オーバーライドするマッピング定義を~/.vim/bundle/ruby-menu.vim/after/plugin/ruby-menu.vim
  2. ~/.vim/after/plugin/mappings-override.vimプラグインの後に供給される別の場所 (例: ) を使用します ( で確認してください:scriptnames) 。
  3. ~/.vimrcviaからオーバーライドを試してautocmd VimEnter * map <F5> ...、プラグインが初期化されるまで実際の定義を遅らせます
于 2014-11-17T11:56:22.457 に答える