为什么不推荐在 Vim 中使用箭头键

为什么不推荐在 Vim 中使用箭头键

“永远不要在 Vim 中使用箭头键!”

我从一个随机发言者那里听到了这一点,但没有机会问他为什么。另外,如果你不使用箭头键,你如何移动光标插入模式?

答案1

使用箭头键被认为是一个坏习惯,因为如果您使用箭头键,您可能会错过 vim 的许多可爱功能。

当人们第一次开始使用 vim 时,他们倾向于停留在插入模式,因为这更像传统的文本编辑。然而,为了在 vim 中有效,您只应该在实际输入文本时处于插入模式。如果您想移动光标,您应该处于正常模式。默认情况下,您应该处于正常模式。

在正常模式下,有无数种快捷键可用于移动。您可以使用hjkl一次移动一个空格,也可以按单词、段落等移动。如果您处于正常模式,则没有必要使用箭头键,因为hjkl它们距离较远。

有一种观点认为,如果你使用箭头键,那么你就“错误”地使用了 vim。事实是,vim 的学习曲线非常陡峭,因此在学习期间,请尽量保持理智。当我第一次开始使用 vim 时,我做的所有事情都是“错误”的,但当我学会了更多 vim 命令后,我很容易就改掉了这个习惯。

举个例子,当我刚开始时,假设我想更改引号中的文本:

String mystring = "I want to change this";

我将进入插入模式,使用箭头键移动到字符串的末尾,按退格键直到字符串消失,然后输入新文本。

一个更好的方法是将光标放在字符串中的任意位置(正常模式),然后按ci"。这将change in "。它将删除引号之间的所有内容并使您进入插入模式,以便我可以输入新文本。

答案2

按键位置

简而言之,Vim使用hjkl按键作为导航界面是因为它是旧“ADM-3A”终端的残余,这些按键上标有箭头。

键盘

由于vim是从派生出来的vi,因此它使用相同的 hjkl 键。

新习惯

使用字母来代替箭头键可以让你无需将手从标准打字配置中移开即可浏览文本。这无疑比移动手来按箭头键更有效、更快捷。如参考资料 #2 中所述(请参阅资源),这样做的好处不止于此:VIM 还有很多其他快捷方式,您无需移动手即可访问。

资源和插入模式

对于你问题的两个部分,有几个非常详细和准确的答案:关于箭头键替换,我已经以快速和总结的方式回答了,然而对于你的插入问题,请参阅下面列出的资源。

答案3

盲打者经常会重复这个愚蠢的咒语,对于他们来说,主行就像是第二根脊柱,非盲打者则想让自己看起来很酷。对于非盲打者来说,主行根本就不是那么特别,稍微移动右手来触及箭头根本不是问题。

需要考虑的重要一点是,重复这个咒语的人建议用什么来代替。

大多数时候,他们坚持使用hjkl

如果我们忽略这样一个事实:这些键之所以被使用,是因为 vi 的作者使用的键盘没有物理箭头键,因此任何反对箭头键的论点都只是合理化的说法,它们hjkl无论如何都只是比箭头键好一点点。是的,使用箭头键的唯一好处hjkl是你跳过了右手在箭头键之间来回移动的微小动作。这种好处是否值得,你自己决定。

但右手的那个动作并不是使用仅有的箭头是低效的。它之所以低效是因为它们限制你逐个字符、逐行移动,而最多编辑文本所需的移动范围要大得多。

敲击右箭头 13 次既低效又无聊。敲击l钥匙 13 次会更好吗?不。这同样愚蠢。

一直按住右箭头直到到达目标虽然没那么无聊,但很容易出错,而且效率几乎和点击 13 次一样低,因为最后必然会出现非确定性的减速。是不是最好一直l按住这个键?不,当然不是。

值得庆幸的是,大多数 GUI 工具包都提供了这样的组合键Ctrl+Right,使我们能够逐字移动或跳转到 EOL、下一段或任何其他位置。这些快捷键帮助我们比使用单个箭头更快、更智能地导航。我们有相同的功能吗hjkl?没有。如果我们愿意,我们可以使用计数,但是谁愿意为每个动作计数字符呢?14k借助于做relativenumber很棒,但水平运动呢?对于大幅度的动作,hjkl实际上比修改器+箭头更糟糕。你猜怎么着?我们最需要的是大动作。

但我们是幸运的混蛋,我们最喜欢的编辑器有几十个围绕箭头旋转的动作 hjkl:bBeEwW/?*#{}()等等。这些命令包括不可估量地如果你习惯了和朋友在一起,那么它将比hjkl大多数情况下更有力量,并且更合乎逻辑和直观。Ctrl+Right

<Right><Right><Right><Right><Right><Right><Right><Right><Right>从到lllllllll甚至 的切换9l都是毫无意义的。

从 切换<Right><Right><Right><Right><Right><Right><Right><Right><Right>到 效果<C-Right>好得多。从那里切换到w既简单又快捷。无需切换到<nop>箭头!

如果这些命令比 更有用、更强大、更直观hjkl,那么为什么那么多博主和评论者坚持用 代替箭头呢hjkl

我不知道。

总之,hjkl在我们的工具带中留出它们的位置,因为我们总是需要移动 2 个字符或行,但它们往往是遮蔽森林的树木。警惕那些反对箭头的人:他们为你准备的东西可能一点也不好。

答案4

人们不赞成使用箭头键,因为当使用 QWERTY 布局时,它会迫使您将手指从主行移开;当使用 Dvorak 或其他布局时,它会迫使您将手指从字符键盘(?)移开。

相关内容