2012-01-14 14 views
7

言って、私は、L,がリーダーであること)を行うと、私はVimの<Plug>ベースのマッピングは動作しません:通常のコマンド

:nm <Plug>Ls :ls<CR> 
:nm <Leader>L <Plug>Ls 

を以下している、私は:lsの出力を得るのですかコマンド。私は:normal ,Lを行うとき、私はまた、出力を得るが、私は次のよう

:normal <Leader>L 
:normal <Plug>Ls 

をやっていないとき、最初は私がexecute 'normal ' . mapleader . 'L'ような何かをしているとし、動作していない理由を私は理解することができます。私が理解できないのは第2のものです。それは私に何かエラーを与えていない、それはただ何もしない、それは私を夢中にさせるものです。私はこの文書でも何も見つけられませんでした。

コマンドモード(実際には関数内)から<Plug>Lsにマップされているものを実行します。これに必要なダークハック

答えて

10

彼らは、あなたはそれ<Plug>を供給されていない、あなたが提供<Plug>ノーマルで動作します。 call feedkeys("\<Plug>Ls")、ないcall feedkeys("<Plug>Ls"):正しい構文はfeedkeys()に適用される同じ

:execute "normal \<Plug>Ls" 

です。

はまたexecute "normal ".mapleader."L"が本当に今まであなたが:nm <Leader>L <Plug>Lsを実行した後mapleader変更かのように使用すべきではないことに注意してください、そして、この:execute …は(mapleader変更がすでに作成されたマッピングには影響しません)、存在しないマッピングを呼び出すようにしようとします。そして、mapleaderが変更されたかどうかを知る方法はありません。

+0

うん、それは動作します。実際には、私はこれを試しましたが、一重引用符で。今はそんなに馬鹿だね!この素晴らしい答えに感謝します。引用符の使用に違いがあることは決して知りませんでした。 –

関連する問題