Vim重新映射hjkl键

23

我试图在我的.vimrc文件中将字母hjkl映射为jkl,这样我就可以在使用vim时保持手指的常规位置。

问题在于,当我将k映射为l时,它会跳到;。 因此k变成了;。 其他按键也有同样的问题。

所以所有的按键都会变成一个,因为它们彼此复制。

我该如何防止这种情况发生?


10
永远不要停止减少手指运动! - xtofl
2
我很好奇,你说你可以使用中指和无名指作为主要的上下移动手势? - Jeffrey Jose
1
触发手指=j, 中指=k, 无名指=l, 小指=;, - john-jones
2
我觉得jkil更直观易懂。 - Slava
1
起初可能有些不习惯,但一旦你习惯了使用默认位置前面的按钮来移动,长期来看你会稍微更快地移动。 - john-jones
显示剩余2条评论
3个回答

42

使用noremap:

noremap ; l
noremap l k
noremap k j
noremap j h

这对于类似<c-w>k的相关绑定也适用吗?还是我也必须重新映射所有这些绑定? - user1804599
1
// 为什么它被称为 noremap? - Nathan Basanese
@37coins::help noremap - Lie Ryan
3
noremap 中的 nore 代表非递归。这可能会让人感到困惑。 - Nick Zalutskiy

5

请查看:help noremap。这将防止映射被递归映射。


2

作为对@Lie Ryan评论的跟进,我已经在类似问题上写了这个答案

基本上,你可能想考虑保留:

jk =

因为它们是如此基本

但也要考虑:

l; =


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接