在Vim中,如何切换“I”、“j”、“k”和“h”的功能

在Vim中,如何切换“I”、“j”、“k”和“h”的功能,vim,Vim,我学习Vim for development已经5周左右了,虽然事情开始变得复杂起来,但我有一个令人沮丧的个人问题仍然困扰着我 我经常用“I”来移动“up”。“k”是down,“j”和“l”分别是left和right 我知道这一切都是因为玩了太多年的电脑游戏,这些都是方向运动。老实说,我不想再和它抗争了,我宁愿做对我来说非常自然的事情。我如何重新映射这些,以便上面是方向运动,“h”是插入 2个问题:如何将这些永久存储在本地设置中,以便在自己的机器上进行开发,以及如何在其他人的机器上工作时快速切换

我学习Vim for development已经5周左右了,虽然事情开始变得复杂起来,但我有一个令人沮丧的个人问题仍然困扰着我

我经常用“I”来移动“up”。“k”是down,“j”和“l”分别是left和right

我知道这一切都是因为玩了太多年的电脑游戏,这些都是方向运动。老实说,我不想再和它抗争了,我宁愿做对我来说非常自然的事情。我如何重新映射这些,以便上面是方向运动,“h”是插入

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

将其放入名为~/.vimrc的文件中:

如果您在其他人的计算机上使用vim,您可以在提示符处键入相同的四个命令:在每个之前,在每个之后输入,并且设置将仅适用于一个会话

另外,no是noremap的缩写,因此可以将整个序列缩短为

:no i k<enter>:no k j<enter>:no j h<enter>:no h i<enter>
当您使用其他人的计算机时。

将其放入名为~/.vimrc的文件中:

如果您在其他人的计算机上使用vim,您可以在提示符处键入相同的四个命令:在每个之前,在每个之后输入,并且设置将仅适用于一个会话

另外,no是noremap的缩写,因此可以将整个序列缩短为

:no i k<enter>:no k j<enter>:no j h<enter>:no h i<enter>
当您使用其他人的计算机时。

不要这样映射!这甚至比使用箭头键更糟糕

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

回到你的问题,重新映射h,j,k,l很容易。然而,做这些映射是没有意义的,你不应该这样做,它不会让你工作得更快,当你使用vim时,它只会让你发疯。你知道,用vim编辑并不意味着

在正常模式下,只需移动光标即可 进入插入模式,进行实际文本编辑 返回正常模式以保存文件 在正常模式下有很多vim魔法,这就是为什么它被称为正常。有了映射,当你想应用它们时,你会非常头疼。让我们举个例子。假设您已经为您的需求设置了映射。i、 j,k和h。我们有一条线:

function foo (String arg)
当光标位于和之间时,可以键入ci来更改括号中的内容。不管你怎么说,我指的是k。会发生什么?当前行及其上方的行将被删除!!你可以说,你会记得输入chw,dhw,ch,dhw。。。因此,你必须在脑海中重新映射这些键

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

通过上面的简单示例,您可以看到这一点。所以,在重新映射这些基本密钥之前,请仔细考虑

不要做那种映射!这甚至比使用箭头键更糟糕

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

回到你的问题,重新映射h,j,k,l很容易。然而,做这些映射是没有意义的,你不应该这样做,它不会让你工作得更快,当你使用vim时,它只会让你发疯。你知道,用vim编辑并不意味着

在正常模式下,只需移动光标即可 进入插入模式,进行实际文本编辑 返回正常模式以保存文件 在正常模式下有很多vim魔法,这就是为什么它被称为正常。有了映射,当你想应用它们时,你会非常头疼。让我们举个例子。假设您已经为您的需求设置了映射。i、 j,k和h。我们有一条线:

function foo (String arg)
当光标位于和之间时,可以键入ci来更改括号中的内容。不管你怎么说,我指的是k。会发生什么?当前行及其上方的行将被删除!!你可以说,你会记得输入chw,dhw,ch,dhw。。。因此,你必须在脑海中重新映射这些键

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


通过上面的简单示例,您可以看到这一点。所以,在重新映射这些基本密钥之前,请仔细考虑

以上几点很好,谢谢你。从箭头键和反击开始的转换让我很痛苦:但我会更努力地挖掘。我以为我只是在更有效地移动,但如果我对未来、更高级、Vim编辑做的弊大于利,我当然不希望这样。老实说,我无法想象当你坐在Vim前按h、j、k、l移动光标时,会让你感觉在玩CS或其他游戏。。。。不要考虑正在编辑的代码或文本。无论如何答案是我的2美分。改为玩几周的Nethack。首先,我完全同意答案中的建议。但如果
如果使用正确的映射将i用作up,那么我的意思仍然是expand,或者在序列ci中如何称呼它。我不想在这里写出来,OP最好不要做映射:但知道另一种情况可能会很好。上面的要点很好,谢谢。从箭头键和反击开始的转换让我很痛苦:但我会更努力地挖掘。我以为我只是在更有效地移动,但如果我对未来、更高级、Vim编辑做的弊大于利,我当然不希望这样。老实说,我无法想象当你坐在Vim前按h、j、k、l移动光标时,会让你感觉在玩CS或其他游戏。。。。不要考虑正在编辑的代码或文本。无论如何答案是我的2美分。改为玩几周的Nethack。首先,我完全同意答案中的建议。但是如果您使用正确的映射来使用i来表示up,那么我的意思仍然是expand,或者在序列ci中如何称呼它。我不想在这里写出来,OP最好不要做映射:但知道另一种情况可能会很好。