我在许多文章中都读过(例如),在正常模式下使用箭头键是一种不好的做法。有人可以解释为什么这被认为是错误的做法吗?

评论

不使用hjkl的一个很好的理由是,如果您使用另一种键盘布局。例如,hjkl在Dvorak中没有空间相关性,因此很难使用。

@Kylos我在Dvorak中使用hjkl。它绝对不如qwerty明智,但是我不知道我会称其为“难于使用”。它们只是钥匙,一旦习惯了,就很难触及它们。

有很多神话为什么hjkl应该是移动文档的最佳选择。事实是,在创建vi时,某些键盘在hjkl上具有箭头键,因此vi在正常模式下使用相同的键来匹配键盘布局。这是带有键盘照片的文章:catonmat.net/blog/why-vim-uses-hjkl-as-arrow-keys

任何以困难着称的事物都会吸引某种人。 Crossfit,Vim,函数式编程,素食主义者等。现在可以肯定的是,并非所有从事其中一项活动的人都属于此类活动,但他们经常不成比例地出现。该人的魅力之一就是活动本身的难度。降低准入门槛的事情使他们感到厌恶:这使它们不那么特别。有理由偏爱hjkl。好的。但是,它们至少在某种程度上被夸大为教条,因为人们不得不觉得自己比别人更好。

@Kylos我同意hjkl不是dvorak中最好的。但是作为一个打折的用户,我发现它们很方便,因为它们是配对在一起的:就像在董事会一侧的jk中一样;和hl在另一侧。

#1 楼

实际上,这不是一个坏习惯。键盘的第二行有hjkl),这使您效率降低。有些甚至禁用了箭头键,然后他们抱怨说它们的效率不如以前。 h和l是,请使用箭头键。如果您想使用鼠标,Vim甚至具有set mouse=a选项! ge,以及:h quickref中的所有内容),您可能会意识到您使用的箭头键不多。而且,如果您仍然使用它们,那也不是问题,使用最有效的方法。 :如果您看一下为什么vim使用hjkl,您会看到选择了这些键,因为在编写Vi时没有任何箭头键。有人可能会争辩说,如果此时键盘不同,那么没人会认为不使用箭头键是一种好习惯。

评论


我经常发现自己的手腕弯曲得很厉害,无法触到箭头键,因为我已经习惯了。最后,我禁用了箭头键,使自己习惯于减轻手腕的疼痛。

– Shahbaz
18 Mar 26 '18 at 13:57

我想指出的是,这只会在QWERTY键盘上引起轰动。对于某些布局,hjkl可能是真正的痛苦。

–牛羚
18-3-27的2:14

您可以同时使用这两个选项:无论您选择hjkl还是箭头,都可以绑定另一组上/下键以按屏幕上的行而不是文件行移动。在编辑行较长的文件时会很有帮助。

–user31389
18年3月28日在9:21

在阅读您的答案之前,我没有意识到我几乎不使用hjkl和方向键,因为我已经习惯了您提到的高级运动命令。好点子!

– Spiros
18年3月28日在18:22

无论我多么欣赏您的直觉答案,我是否可以胜任您作为主持人和vi爱好者的努力,以尽最大的努力找到一些不太“有趣”的替代短语,以使混蛋不会引起生动的干扰图像个在彼此的公司中一起自慰的男孩或男人的无裤ring环‽很高兴吗? :)

–基督
18-3-29在2:27



#2 楼

我不知道这是否真的有用,但是我是个老朋友,所以这里有一些历史。

过去,VT100终端带有箭头键,但是按一个传送了一个转义序列,例如<ESC>[A表示向上,<ESC>[B表示向下等。
作为串行终端,它以9600波特进行通讯,因此用户可能过快地按下按键来传输整个序列,这会导致一次按键可中断上一次按键的顺序并使vi混乱。

这将导致vi莫名其妙地进入插入模式,并按住[向下箭头]将[B [B [B [B [B [B [B] B]插入文件中。我莫名其妙地说是因为此序列没有任何内容应进入插入模式,并且每个序列以ESC字符开头的事实都应该退出了插入模式。但是仍然会插入垃圾。并非总是如此-只是在您急忙的时候。

一个人很快就厌倦了这一点,决定坚持使用hjkl键。

评论


无论出于何种原因,TCP终端程序仍然使用基于转义的箭头键,并且仍然没有任何100%可靠的方式来区分按转义键和发送箭头键转义序列的第一个字节。

–超级猫
18 Mar 26 '18在23:20

@supercat他们确实有可靠的方法来区分它们。使用SC81T进行调用。问题更多是许多程序不进行协商,而某些终端可能不支持它。

–詹姆斯
18 Mar 27 '18 at 0:07

@jamessan:如果我没看错,您的建议是,将转义与箭头键区分开的可靠方法是不使用基于转义的箭头键,这与我对由于程序仍在使用转义的程序的“出于某种原因”的评论有关基于箭头键。

–超级猫
18 Mar 27 '18 at 14:22

嗯,我有一个可以模拟VT100的旧IBM终端,可能必须尝试一下

–一条wig
18 Mar 28 '18 at 14:37

我当然可以肯定这是正确的,至少是在80年代时如此,因为这个原因,我们不得不在本科生终端室张贴标志,不要在vi中使用箭头键。当tty驱动程序丢弃中断时,他们不断弄乱文件。

–基督
18-3-29的2:35

#3 楼

尽管我同意@statox的意见,但如果他们选择使用箭头键,则任何人都不应受到鞭打,避免,驱逐或涂柏油和羽毛...使用您的软件,但您认为合适...我不会冒充如果我要为思想开放的新用户提供指导,那将是一种自由放任的态度。我强烈建议他们从遵循最佳做法开始。由于某些原因,它们是“最佳实践”……它们已经被许多在您我之前出现的人所采用,并取得了良好的效果。

哎呀,即使Vim自己的帮助也会朝着这个方向推动,尽管并非夸张(“大大放慢”)...使用箭头键来移动光标。如果这样做,
但是会大大降低编辑速度,因为要按箭头
键,必须将手从文本键移到箭头键。
考虑到您可能会每小时执行数百次,这可能会花费大量时间。


还有一个事实,就是您一开始所做的任何选择都可能会成为习惯如果将来要更改,很难突破。因此,在所有其他条件都相同的情况下,为什么不立即采用推荐的习惯,而不是趁机使用箭头键效率低下或杀死腕骨呢?键。经过一段合理的时间后,如果您不能没有上/下/左/右的生活...别这样。

...我要对新用户说对我的观点感兴趣。如果您不同意,请不要亲自对待(我是在跟您说话,唐纳德·沃特勒)。

评论


即使您接受它确实比箭头键更好(我什至都​​不敢相信),它还是所有可能的“最佳实践”列表的最底端。我认为有很多比使用hjkl更重要的事情。

–马丁·图尔诺伊(Martin Tournoij)
18 Mar 26 '18 at 14:25

@Carpetsmoker我认为没有必要对最佳做法进行排名。除非您强烈希望使用箭头键,为什么不按照Vim的建议进行操作?特别是如果您是Vim的新手,我们都知道一旦根深蒂固地改变我们的工作方式是多么困难。

– B层
18 Mar 26 '18在20:12

“您大大降低了编辑速度”-对我来说似乎有点夸张……尽管如此,我同意值得一试。坦白说,这还不足以引起争议。

–阴影
18-3-26在22:46



@BLayer不,不是这里-这是我认为我所见过的关于该主题的最民间的讨论。但是战争肯定已经打过了……

–阴影
18-3-26的23:00

认为没有必要对最佳做法进行排名好吧,在我看来,考虑到资源有限且寿命短,我们应该专注于赋予我们最佳人生价值的事物。我碰巧知道hjkl键是心脏,这是由于童年时代的童年童年在没有数字键盘的笔记本电脑上玩流氓,拉姆,angband等导致的,但是有些人度过了他们的童年,因此无论如何都要“取消学习”箭头键。我认为学习动作,范围等是花费时间的更有用的方法。

–马丁·图尔诺伊(Martin Tournoij)
18-3-27在2:07



#4 楼

其他答案表明,将您的手从本行移开不会造成太大的问题,我大都同意。但是,最重要的是,当您学习vim时,请始终使用箭头键来避免切换回正常模式。并不是生产力的巨大损失,但是在可以使用EscI的地方使用←←←←←←←←←←是一个巨大的损失。当您学习vim时,因为它迫使您学习普通模式,而不是从不离开插入模式。普通模式是您所有效率提高的地方。

评论


+1。换句话说:“不要使用箭头键,也不要使用hjkl。” (保留故意夸张。)

– wchargin
18-3-29的1:15

实际上,您可以使用1 0←或更简单的Home来代替10←。后者甚至可以在Windows记事本中使用。

–俄罗斯
18年3月29日在5:49



#5 楼

人们说您不应该使用箭头键的主要原因有两个。有人声称hjkl是首选,因为它可以将您的双手放在主行上,这不是错误的,但也没有关系。其他人(包括我自己)会说,如果要移动多个字符,则不应该使用箭头键,但是也不要使用hjkl。

重要的不是您使用的是哪个键,而是几个。如果要移至单词的开头,请不要单击hhh;你打b。单词的结尾是e,而不是llll。该行的开头:0,该行的结尾:$。以及其他任何内容,请输入您想去的文本。 (或您喜欢的任何高级移动命令)。

但是,只要您发现自己连续多次键入相同的键,就会有更好的方法。

#6 楼

一个更精确的说法可能是“在尝试更好地学习vim时,使用箭头键是一种不好的做法”。 vim的新手习惯于使用箭头键来回走动,因此不要学习hjkl,因此不会有机会看看这是否更可取。

个人,在熟悉了一些基本知识之后vim,我暂时禁用了箭头键以挂起hjkl,然后稍后重新启用它们以简化我的.vimrc。在我看来,传统观点是成立的。知道如何同时使用hjkl和箭头键后,我发现自己几乎只能使用前者。

评论


我不同意。就像这个博客所说的那样,对于初学者来说,“全有或全无”的方法有助于引起vim的“用户不友好”声誉。新用户开始,陷入困境,不知所措,并且(不奇怪)得出结论,vim真是一团糟,然后切换回编辑器,使他们可以提高工作效率。 -如果您正在学习游泳,则不要将自己从船上扔入大海。在小孩子的游泳池附近dog狗划水是完全可以接受的,直到您对水感到舒适为止。

– R.M.
18年3月27日在16:05

...并不是说禁用箭头键对人们不起作用。但这是“我喜欢vim,想学习如何更好地使用它”这一步骤,而不是“我对vim是新手并想要学习如何使用它”这一步。

– R.M.
18 Mar 27 '18在16:07

#7 楼

通常的答案涉及效率。多年来,您可能已经接受过使用触摸打字的培训,这需要使您的手保持在asdf和jkl;上。 Vi中的绝大多数键绑定都是围绕这个事实设计的,包括hjkl运动命令。在主动编辑大部分文本时,使用hjkl;在日志文件中滚动时,使用方向键;在整个文件中进行点编辑时,使用|,g和/。这恰好对我很有效,在这种情况下,这才是真正重要的。

#8 楼

很久以前,许多终端没有箭头键,或者没有所有四个键。需要导航的软件系统通常提供某种导航方法,而无需依赖箭头键,而vi的hjkl是一个典型示例。 (另一个经典的例子是WordStar的^ E- ^ S- ^ X- ^ D。)随着键盘导航的实用性变得越来越明显,越来越多的新终端开始带有箭头键,并且软件系统通常将它们映射为旧的方式。导航。但是,这带来了某种可移植性问题:如果在学校训练过的孩子要依靠花哨的新颖功能(例如箭头键),他们的想法是,他们可能无法在曾经很常见的情况下提高生产力没有方向键的键盘。

因此,基础计算课程的教师开始谨慎地警告学生学习使用最低公分母,以最大程度地提高他们的就业能力。而且这种做法早已不复存在,曾经有过任何理由。

在vi的现代实现中,更喜欢hjkl的主要原因是,使用已经在您手中的键比移动您的手要快一些。移至箭头键所在的位置。当然,避免进行上下文切换的缺点是您可能需要执行vi的上下文切换。如今,当人们很少通过打字速度来珍惜人类时,您是否执行一项操作几乎完全是个人喜好问题,并且即使有使用箭头键也没有内在的坏处。