Vim:在等待操作模式下交换2个字符



使用异国情调的键盘布局,我必须重新映射g(以及其他),在我的布局中,在经典的qwerty布局中,g位于h位置。为此,我决定使用以下命令将g与h交换:

noremap g h
noremap h g

这行不通。例如,输入hh被视为gh,而不是gg,当点击g时,它显示g(启用showcmd)而不是h,它似乎没有考虑到重新映射,它的行为就像g命令一样。但当再次按下g或等待1秒时,它实际上向左移动。

我尝试了以下操作使其在操作挂起模式下工作

onoremap g h
onoremap h g

但是它没有改变任何东西。

为什么会这样呢?如何解决这个问题?

gg这样的多键命令(或各种<C-w>命令,我记得类似的问题)的麻烦是它们是而不是 g命令后面跟着g操作符。(特别是有了g前缀,在这个空间里有一大堆不相关的命令在原来的vi中找不到。)

恐怕你得为它们分别定义重新命名:

:nnoremap hh gg
...

最新更新