2

我有一个自定义键盘布局。所以我有 vim 命令h,j和绑定到其他字母kl例如我已经绑定je,像这样:nmap e j

这样做的问题是,在操作员挂起模式下,我有时想e表示j,有时我希望它表示e。例如,当我按下时,de我想要它的意思dj,但是当我按下时,te我想要它的意思te

有没有办法解决这个问题?

我可以这样做omap de dj,但如果我想通过键入来删除更多行,那将不起作用d3e。如果有(我不这么认为,或者有吗?)某种方式来匹配数字,例如使用 #,那么我可以使用omap d#e d#j. 或者也许有一些方法可以根据我已经在操作员挂起模式下输入的内容来更改映射。

4

1 回答 1

4
  1. 你几乎不应该考虑用*noremap,不做这个*map
  2. nnoremap e j不可能破坏te。也不能: 不是onoremap e j运算t符,也不会调用运算符挂起模式。
  3. omap de dj与普通de模式下的按下无关,您应该按下来调用映射。并且与改变: you need here的含义无关(operator-pending 模式由 operator 调用,但 operator 必须在正常模式下键入。它也不是调用模式的一部分)。ddennoremap e jdeonoremap e jd
  4. 基本移动键的重新映射是您需要的极少数情况下的完美示例,noremap无需前导n,或其他内容。尝试做ov

    noremap e j
    

    对于您要重新映射的所有键,这应该足够了。

  5. 重新映射不会在模式开始时发生,因此无需执行onoremap 3e 3j. onoremap e j也将启用做d3e-> d3j。并且noremap e j等价于

    nnoremap e j
    onoremap e j
    vnoremap e j
    
于 2012-05-30T19:32:26.333 回答