2012-01-14 10 views
7

Say bir L (, lider olmanın), ben :ls çıktısını alırım komut. Ben :normal ,L yaptığımda ben de çıktı almak, ancak ilk çalışmama nedeniniVim'ın <Plug> tabanlı eşleştirmeleri: O da, ben</p> <pre><code>:nm <Plug>Ls :ls<CR> :nm <Leader>L <Plug>Ls </code></pre> <p>şu var, normal komuta

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

anlayabiliyorum aşağıdakileri yaparak yokken, ben execute 'normal ' . mapleader . 'L' böyle bir şey yapmak olduğunu varsayalım. Anlayamadığım şey ikinci. Bana herhangi bir hata vermez, sadece bir şey yapmaz, beni deli eden şey budur. Bu konuda dokümanlar da bulamadım.

Ne yapmak istediğim, komut modundan (aslında bir işlevde) <Plug>Ls ile eşlenen herşeyi çalıştırmaktır. Bunun için gerekli herhangi bir karanlık hack var mı?

cevap

10

Onlar sadece o <Plug> tedarik edilmez, sen tedarik <, P, l, u, g, > normale ile çalışır. Doğru sözdizimi Aynı

:execute "normal \<Plug>Ls" 

feedkeys() için geçerlidir geçerli: call feedkeys("\<Plug>Ls") değil call feedkeys("<Plug>Ls").

Ayrıca o zaman bu :execute … (mapleader değişiklikler zaten oluşturulmuş eşlemeleri etkilemez) varolmayan eşleme aramaya çalışacağız, :nm <Leader>L <Plug>Ls yürütmek sonra execute "normal ".mapleader."L" gerçekten zamanki gibi eğer mapleader değişiklikleri kullanılmamalıdır unutmayın. Ve mapleader'un değişip değişmediğini bilmek için hiçbir yol yoktur.

+0

Evet, işe yarıyor. Aslında bunu denedim, ama tek tırnaklı. Şu an çok aptalım! Bu harika cevap için teşekkürler. Alıntıların kullanımında bir fark olmadığını asla bilemezdim. –

İlgili konular