说,我有以下
:nm <Plug>Ls :ls<CR>
:nm <Leader>L <Plug>Ls
当我执行,L (,
为领导者)时,我确实获得了:ls
命令的输出。当我执行:normal ,L
时,我也会得到输出,但在执行以下操作时我不会这样做
:normal <Leader>L
:normal <Plug>Ls
我能理解为什么第一个不起作用,我想我必须做一些像execute 'normal ' . mapleader . 'L'
这样的事情。我无法弄清楚的是第二个。它没有给我任何错误,它只是没有做任何事情,这是让我发疯的原因。我在文档中找不到任何相关内容。
我想要做的是从命令模式(实际上在一个函数中)运行映射到<Plug>Ls
的任何内容。这需要黑暗的黑客吗?
答案 0 :(得分:11)
他们确实正常工作,您只是提供<Plug>
,提供<
,P
,l
,u
,{{1 },g
。正确的语法是
>
同样适用于:execute "normal \<Plug>Ls"
:feedkeys()
,而不是call feedkeys("\<Plug>Ls")
。
另请注意,执行call feedkeys("<Plug>Ls")
后,execute "normal ".mapleader."L"
实际上不应该被用作mapleader
更改,然后此:nm <Leader>L <Plug>Ls
会尝试调用不存在的映射({{ 1}}更改不会影响已创建的映射)。而且你无法知道:execute …
是否已经改变。