vim 非qwerty布局键位映射问题解决方法
本人使用colemak,其他布局可以参考

问题: 自从从qwerty换到colemak后, 需要重新映射一些按键,大部分按键就 noremap 一下就可以了,但是如果把i映射为l(光标向右移动)后(k映射为i),有一个问题就是i 是 text-object 的前缀, 如果我想执行 change inner word 的时候,依旧需要使用 qwerty 的 ciw, 即使我已经把i映射为l.最难受的一点是在visual mode 的时候,我想用i(已映射为l)来向右移动光标的时候,总需要一个延迟(timeout)后光标才移动过去,实际上这是在看你是否想使用 iw(visual inner word),得等到timeout后光标的显示才会移动过去(但实际上已经移动夺取了),因此,我经常在visual mode 下以为光标没有移动过去多按了一次i去向右,然后就删来一个字母.
解决方法: 使用 `set langmap=ik,ki,IK,KI`, langmap 会交换这两个键全部的功能, 这个时候你就可以把i键完全当作k键,k键完全当作i键了,(当然insert打字不会改变), 这个时候就可以使用 ckw 来实现 ciw,在visual模式下按i键也不会有延迟.注意这样你要映射colemak i键位置应该要map的是k,因为i和k已经交换了,所以要 noremap k l,之前的配置也需要检查一下.
nvim lua 的写法是 vim.o.langmap="ik,ki,IK,KI"
感谢stackoverflow.太开心了!!!