#1 楼
来自http://www.catonmat.net/blog/why-vim-uses-hjkl-as-arrow-keys/:当Bill Joy创建vi文本编辑器时,他使用了ADM-3A终端,该终端的hjkl键上有箭头。自然,他重用了相同的键,剩下的就是历史了!
评论
仍然应该在每个键盘上! :)
– albttx
16年8月23日在12:12
现在,您让我想知道制造emacs的人所使用的终端是哪种...
–leeand00
16年8月23日在19:09
@ leeand00:Symbolics LISP机器空间学员键盘。本文明确讨论了键盘的设计如何影响Emacs的设计,并将其与Vi的设计以及其无处不在的Escape键进行了比较,并且Escape非常方便地位于ADM-3A终端的键盘上。好吧,在Space Cadet键盘上,非常方便地找到Control,Meta,Super和Hyper键,以及不少于3个不同的Shift键,它们可以键入8000个以上的字符。
–‐Jörg W Mittag
16年8月23日在19:35
虽然这个答案是正确的,但它会提出问题而不是回答问题:“为什么ADM-3A键盘选择hjkl而不是像ijkl这样更合逻辑的形状?”
–马丁·图尔诺伊(Martin Tournoij)
16年8月24日在14:12
@Carpetsmoker:直到80年代后期upload.wikimedia.org/wikipedia/commons/3/30/…,我们才发明键盘箭头定位逻辑
–雅各布·克拉尔(Jacob Krall)
16年8月24日在14:37
#2 楼
Nobe4的答案很好,并解释了为什么我们很好地使用hjkl
。但是,看到完整的键盘真的很有趣,而且当您看到vim的完整键盘设计时,关于vim的许多奇怪事情就变得更加有意义。例如,为什么在如此古怪而又不舒服的地方,vi为什么如此依赖esc
键?这就是为什么:您可以看到,
esc
是大多数键盘上的选项卡所在的位置。 ctrl
是另一个很难触及的按键,但是在此键盘上非常舒适的位置(通常是大写锁定)。 评论
vi是否具有
–马丁·图尔诺伊(Martin Tournoij)
16年8月24日在16:27
@Carpetsmoker我是这样认为的,但我不确定。 Vim的:help
–詹姆斯
16年8月24日在16:36
也很难通过Google找到有关vi的信息,因为大多数结果最终都是关于vim的。
–詹姆斯
16年8月24日在16:37
@DJMcMayhem pubs.opengroup.org/onlinepubs/009696699/utilities/vi.html和roguelife.org/~fujita/COOKIES/HISTORY/1BSD/exrefm.pdf是vi的良好参考(分别是POSIX和历史)。您还可以下载nvi,elvis,vile或ex-vi(ex-vi是历史vi的后代),并查看其功能或说明文件。 vi中没有
–Random832
16年8月24日在18:23
同样,Vim最初是为Amiga(在其通常的[ISO或大回车]位置使用反斜杠)开发的,并且基于Stevie,它是为Atari ST(在过去的右下角使用反斜杠,过去是回车),但显然没有支持:map都可以)
–Random832
16年8月24日在18:25
#3 楼
至于为什么这些箭头印在这些键上……是因为它们可以与控制键一起用于本地光标移动。 Ctrl-H和Ctrl-J(退格和换行)很明显,即使在今天也很容易记忆。 Ctrl-K是“垂直制表符”,但有时用于在pre-ANSI终端上进行反向换行。 Ctrl-L用于无损光标向前的选择可能是基于其键盘位置。您可能还注意到在键盘图片中的另一个答案中,“ HOME”是在
^
/ ~
键上。当然,Ctrl- ^会将光标移至原处(发送到屏幕的左上角或视情况而定的左下角)。这些控件映射还用于Wyse终端,Kermit协议并且在某些版本的PC ANSI.SYS中受支持。
来源:
ADM-3A操作手册,第3-5页[ pdf第38页]开始描述控制功能。
其他终端的Terminfo数据库;搜索
kcuf1=^L
和kcuu1=^K
评论
^ H,^ K –很有启发性,因为从今天起,我将轻松记住^ J向下移动。我从不记得可靠的上下分配。
– Miroxlav
16年8月24日在10:57
评论
检查vi的Wikipedia页面,其中包含一些古老的Unix机器键盘的图片,其中解释了一些键绑定。因为vim免于跟上技术进步:3
您可以舒适地将一只手的四个手指放在hjkl键上,并在四个方向上移动光标,而无需前后移动手指。如果您真的考虑过,那么连续四行是唯一符合人体解剖学的光标键布局。问题实际上是其他人如何设法将其弄错。
实际上,不建议将索引放在h上,而应该放在j上(这就是为什么在j键上有一个“乳头”)。这样做的原因是,您将使用b远远多于h并拥有;可访问性在许多编程语言中都很方便(并且有一种转变,您可以使用:在Vim中更加方便)。
顺便说一句,在Unix SE上第二个最受好评的问题中涵盖了该主题。