说,我有以下

: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已经改变。


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!