在Vim中,我如何切换'i','j','k'和'h'的功能

use*_*182 1 vim

我花了5周左右的时间学习Vim进行开发,虽然事情已经开始陷入困境,但我有一个令人沮丧的个人问题仍在绊倒我.

我一直在用'我'来'向上'.'k'向下,'j'和'l'分别左右.

我知道这一切都来自玩太多年的PC游戏,其中这些是方向运动.老实说,我不想再打它了,我宁愿做一些对我来说非常自然的事情.我怎样才能重新映射这些以便上面是方向移动而'h'是插入的?

2个问题:如何在我自己的机器上将这些永久存储在我的本地设置中以进行开发,以及当我在其他人的机器上工作时,如何快速切换这些.我的意思是,是否有一组命令可以调用,然后当我关闭Vim时它们会被删除?

Ken*_*ent 10

不要做映射!它比使用箭头键更糟糕

首先,我建议你学习移动光标的vim方法.

回到你的问题,重新映射h,j,k,l很容易.但是,进行这些映射没有任何意义(并且你不应该这样做),它不会让你工作得更快,它只会让你在使用你的vim时发疯.你知道,用vim编辑并不意味着

  • 在NORMAL模式下,只需移动光标即可
  • 进入INSERT模式,进行实际文本编辑
  • 返回NORMAL模式以保存文件

你可以在NORMAL模式中做很多vim魔法(这就是它被调用的原因NORMAL).你的映射,当你想要应用它们时,你会真的很头疼.我们来举个例子吧.假设您已经为您的需求设置了映射.i,j,k and h.我们有一条线:

function foo (String arg)
Run Code Online (Sandbox Code Playgroud)

当光标位于(和之间时),您可以键入ci(以更改括号中的内容.不过你的i意思k.会发生什么?当前行和它上面的行将被删除!! 那么你可以说,你会记得键入chw, dhw,ch(,dhw...所以你必须在你的脑海中重新映射这些键.:)

此外,当你想"借"别人的.vimrc,或使用一些插件时,你也会遇到问题.

您可以通过上面的简单示例看到这一点.因此,在重新映射这些基本密钥之前,请先考虑两次.

  • 玩Nethack几周. (2认同)

Nei*_*ter 6

把它放在一个名为的文件中~/.vimrc:

noremap i k
noremap k j
noremap j h
noremap h i
Run Code Online (Sandbox Code Playgroud)

如果您在其他人的计算机上使用vim,则可以在提示符处键入相同的四个命令(:在每个命令前键入,然后在每个命令后输入),这些设置仅适用于1个会话.

此外,no是缩写noremap,所以你可以缩短整个序列

:no i k<enter>:no k j<enter>:no j h<enter>:no h i<enter>
Run Code Online (Sandbox Code Playgroud)

当你使用别人的电脑时.