如何覆盖标准 "y" 和 "d" 行为

How override the standard "y" and "d" behavior

我想映射一些组合。我已经阅读 :h map 很长时间了,但我仍然不明白如何映射“d”和“y”,以便它们执行以下操作({ } 是可选的):

              d{count}{movment} =>     "_d{count}{movment}
{"reg}<Leader>d{count}{movment} => {"reg}d{count}{movment}

我想让d真正删除文字,这样熟悉的d3dd3wdiw等也能真正删除文字。 <Leader>d 切入寄存器 "1(如果未指定)或切入特定寄存器。

     y{count}{movment} =>      y{count}{movment} call my_func()
"reg y{count}{movment} => "reg y{count}{movment}

y 相同,但此处 y{count}{movment} 必须复制并调用我的函数。 "reg y{count}{movment} 应该照常工作。

我希望它能在视觉模式和正常模式下工作。

  1. 这是邪恶的,不应该这样做。只有当你寻求个人“挑战”时才有意义,但在这种情况下,你最好自己想办法。但如果您仍然需要提示,我可能会从 :h 'opfunc'

    开始
  2. 如果您的 Vim 足够现代 (8.1+),这很容易实现。只需抓住 :h TextYankPost 并从那里做你的事情。