有没有办法使用寄存器的动作?

Is there a way to use a motion with a register?

假设我的寄存器中有一个 5 ", 我希望能够使用该寄存器的内容来移动 5 个字。一个例子

5w

会是

[some way to read the register]w

这可能吗?

无非:

:exec 'norm! '.@".'w'

这是

的作品
  • @x returns x 寄存器的内容,所以在这种情况下 @" returns " 寄存器的内容
  • 正在生成包含 norm! <val of " reg>w
  • 的字符串(. 是 VimL 中的串联运算符)
  • :norm! 将在正常模式下将给定的字符串作为操作执行(忽略任何用户映射,这是 ! 所做的)
  • :exec 将执行给定的字符串,因为它是命令行模式命令