vim 在内部是如何做到的,以便按下一个 `y` 不会等待 `yy` 键映射的第二个 `y`?

How did vim do internally so that pressing one `y` doesn't wait for the second `y` for the `yy` key map?

通常情况下,如果我定义需要 2 个键的键映射,按下第一个键将等待第二个键,但是像 y 这样的键会立即执行,而 yy 仍然有效。这可以用vimscript实现吗?

这就是它的工作原理。

当你按 y 时,它等待输入,它在等待你给出动作。

如果您查看 h: yh: yy,您会看到他们说 y 猛拉 {motion} 文本到寄存器中。 y 命令实际上不会拉出文本,直到您至少按下第二个键以指示方向。 y 的典型用例更像是 y4l 将 4 个字符向右拉。

当您提供另一个 y 按键而不是动作时,这是一种特殊情况,它只是从行的开头猛拉到换行符。