说,我有以下
: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
的任何内容, 从命令模式(实际上是在一个函数中)。这需要任何黑暗黑客吗?
请您参考如下方法:
他们确实可以正常工作,只是您不提供它 <Plug>
,您提供<
, P
, l
, u
, g
, >
.正确的语法是
:execute "normal \<Plug>Ls"
同样适用于
feedkeys()
:
call feedkeys("\<Plug>Ls")
,不是
call feedkeys("<Plug>Ls")
.
另请注意
execute "normal ".mapleader."L"
真的不应该像
mapleader
那样使用执行后更改
:nm <Leader>L <Plug>Ls
,那么这个
:execute …
将尝试调用不存在的映射(
mapleader
更改不会影响已创建的映射)。而你有没有办法知道
mapleader
已经改变。