Vim:如何重新映射 "general" 键

Vim: how to remap a "general" key

我非常喜欢 Vim 的一件事是它可以提供多个剪贴板。然而,我讨厌写 "ay 到 yank 和 "ap 到粘贴,我宁愿有更接近经典的 Ctrl-c,Ctrl-v 的东西,比如 ←a (←: AltGr + y) 和 þa (þ: AltGr + p).

在这种情况下,我可以像 nnoremap ←a "ay 那样进行重新映射,但那样的话我将只有缓冲区“a”可用于这种方式。所以问题是:我可以做一个重新映射,例如 vim 中的 nnoremap ←{key} "{key}y,用我键入的任何内容替换 {key},这样我就可以使用任何字符作为寄存器,只有一个重新映射? (←q 变为 "qy←w 变为 "wy,等等...)

顺便说一句:是的,像“←”和“þ”这样的 AltGr 键就像任何其他命令字母一样工作。

映射的 left-hand 端不能是动态的。

处理该限制的最简单方法就是遍历列表:

for reg in 'abcdefghijklmnopqrstuvwxyz'
    execute 'nnoremap ←' .. reg .. ' "' .. reg .. 'y'
    execute 'nnoremap þ' .. reg .. ' "' .. reg .. 'p'
endfor

参见 :help :for:help :execute:help expr-..


请注意 y 是一个 操作员 并且操作员应该对一项议案进行“操作”。这意味着所有那些 "{char}y 普通模式映射都是无用的。要使其真正有用,您需要:

  • y
  • 制作视觉模式映射
  • 制作一个自定义运算符以在正常模式下使用,请参阅 :help :map-operator