我正在尝试使以下键绑定工作:
vim.keymap.set("n", "<C-Enter>", ":MoltenEvaluateOperator<CR> ib", { desc = "evaluate operator" })
就上下文而言,我根据https://github.com/benlubas/molten-nvim/blob/main/docs/Notebook-Setup.md设置了 molten-nvim ,一切似乎都运行良好。当我键入:MoltenEvaluateOperator
并按回车键时,ib
它完全按照我的预期执行;:MoltenEvaluateOperator
通过“动作”执行ib
。
因此,我希望我也可以创建一个键绑定来为我执行所有这些操作,因为我将始终将此命令与 结合使用ib
。您可以在上面看到我创建的键绑定。
但是,它不起作用。 似乎 使i
nvim 进入插入模式,然后是b
,随后也是g@
。 这完全出乎意料,因为当我手动输入相同的键序列时,nvim 不会这样做。
我也尝试过:
vim.keymap.set("n", "<C-Enter>", ":MoltenEvaluateOperator<CR><Up>", { desc = "evaluate operator" })
但它也只会将光标向上移动,而不会真正执行:MoltenEvaluateOperator
动作<Up>
。
有人知道这是怎么回事吗?我怎样才能让它真正发挥作用?
问题在于插件
feedkeys()
内部调用。在 Vim 中,整个映射被附加到输入队列中。然后 Vim 执行它,将
feedkeys()
其参数 (g@
) 附加到映射的剩余部分 (ib
) 之后。因此,您得到的ibg@
不是g@ib
手动输入的结果。该怎么办?(1)自己使用 feedkeys('ib') 来欺骗它;或(2)提出问题,这样他们就会将
i
标志放入 feedkeys 调用中(“插入”而不是“追加”);或(3)停止使用低质量的插件(在我看来,任何使用 feedkeys 的插件都已经很可疑了,但如果它做得不正确,就会直接进入垃圾箱)。