2013-08-31 13 views
34

私は最近、<Plug>という名前でvimプラグインを見つけました。たとえば、実行したいコマンド<Plug>abc_defがあります。vimでコマンドを実行

私は:<Plug>abc_defなどのようなものを試しました。何も働かなかった。そして:help <Plug>は情報を与えなかった。

しかし、私はマッピング:map x <Plug>(unite_redraw)を作成することでそれを実行することができました。それから、xを押して実行することができます。

:<Plug>abc_defを実行するにはダミーのマッピングを作成せずに実行する方法はありますか?私が使用する実際のプラグインはUniteです。

答えて

44

<Plug>マッピングはであり、マップを介してマップされ、呼び出されることを意味していました()。 A <Plug>マップは、プラグインアクションのクリーンなインターフェイスをユーザーに公開するためのデバイスです。


例:の代わりに、このような「『審美的に中央カーソル』アクションにzzをマップ」などのプラグインのハードコード、中にいくつかのプラグイン機能にいくつかのキーをマッピングし、

nnoremap <expr> zz 'zz'.float2nr(winheight(0)*0.1).'<C-E>' 

ことがあります「アクション」をコピーして貼り付けなくても、ユーザーがマップできる名前付き<Plug>マッピングだけを公開する方がよいでしょう。

これは、ユーザーが簡単に上書きし、再利用してプラグインすることができます。


マッピングは、定義されているモードでのみ有効です。通常モードで定義されている<Plug>マッピングを実行するには、通常のコマンドと同様に使用できます。使用する場合は、:normal(感嘆符なし)を使用します。 <Plug>が実際に特別な魔法の鍵を表しているので

:execute "normal \<Plug>NiceCenterCursor" 

は、我々は:executeと一緒:normalを使用して<Plug>をエスケープする必要があります。

<Plug>メカニズムの詳細は、:h 41.11に記載されています。 this article about this topic by a Vim masterも参照してください。

+4

ああ、nmapは 'nmap'であり、' nnoremap'ではなく、これは ' NiceCenterCursor'をもう一つのマッピングとして考えるからです。正しい? – Tarrasch

+4

@Tarrasch正確には、地図の右側を再マップしてこれを機能させる必要があります。 ':normal'と同じです:再マップしない':normal !'ではなく、(再マッピング) ':normal'を使うことが不可欠です。 – glts

関連する問題