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

问题描述:

使用异国情调的键盘布局,我必须重新映射g(其他),即在我的布局中,在经典qwerty布局的h位置。为此,我决定使用以下命令将g与h交换:Vim:在操作待定模式下交换2个字符

noremap g h 
noremap h g 

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

我尝试以下,以使其在运行挂起模式

onoremap g h 
onoremap h g 

工作,但它不会改变任何东西。

那么为什么它的行为呢?以及如何解决它?

与像gg多键命令(或从中我记得有一个类似的问题的各种<C-w>命令)麻烦的是,他们不命令g后跟一个g运营商。 (特别是随着g前缀,有一个整体范围在空间中的原始VI没有发现不相关的命令。)

恐怕你必须定义单独的重新映射为所有的人:

:nnoremap hh gg 
... 
+0

那真是太遗憾了。虽然它回答了这个问题,但它并没有解释我描述的行为(即使在正常模式下也不起作用的g重映射),这是最烦人的。不管怎么说,还是要谢谢你。 – bootleg 2013-04-22 13:58:41