为什么 vim 里面要将 J 设置为向下 K 为向上而不是更符合直觉的 HJKL 被左上下右映射呢?

348 天前
 Moeblack

我这几天在和学习使用 Vim ,并且试着用平铺窗口管理器来管理窗口。 发现默认的调整浮动窗口方向的快捷键 UIOP 这四个就是按照左上下右这种符合直觉的方式来排布的。 当然,HJKL 还是按照左下上右来排布。

很好奇这一点,为什么要使用一个反直觉的 JK 设计。 我想到的理由是 J 对应的是人的食指,而向下的操作在实际使用过程中使用的频率更高。

AI 的回答是: Vim 编辑器中的键位映射,尤其是 h, j, k, 和 l 用于光标移动,是基于历史原因设定的。j 袌似字母 j 的下降形状,被用于向下移动。

vim 确实可以按照自己的逻辑改成 J 对应上而 K 对应。只是想搞清楚这个历史原因的来由。

2445 次点击
所在节点    程序员
21 条回复
iorilu
348 天前
都可以改的啊, 你可以改成你要的, 试试看好不好用
McZoden
348 天前
1. 大多数人,食指和中指,比无名指灵活
2. *一般情况下*,向上和向下的操作频率,*可能* 会高于向左和向右
3. 正确的指法下,食指默认放在 j 上面,中指默认放在 k 上面
4. 和“j” 褒姒字母 j 的下降形状,无关

综上,最多操作的向上向下移动,映射到了食指和中指默认放置的按键上,即,j 和 k
littlewing
348 天前
@McZoden 你这等于没回答,楼主想问的是为啥不是 j 向下,k 向上
vcn8yjOogEL
348 天前
Vi 原作者使用的 ADM-3A 终端将 HJKL 作为箭头键使用, 因此 Vi 和它的继任者都沿用了这个布局
参考: https://en.wikipedia.org/wiki/ADM-3A#Legacy
jayeli
348 天前
因为 J 和 ↓ 长得比较像 (乱说的
xiangyuecn
348 天前
首选:不选 j 当做向下,就选 f 当做向下,再不济用空格键也行,别人敲一下 vi 能敲 1.5 下😂
McZoden
348 天前
还有一个思路,在以前的 tty 时期,也就是一台大型机配许多台远程终端的时候
ctrl j ,是另起一行的快捷键,也可以作为命令输入完毕后的回车

如果 vim 在这之后出现,那有可能是沿用了这个 j 向下

其实现在 linux 大多数终端下,ctrl j ,也是和回车一样的表现
ns09005264
348 天前
不知道历史缘由,个人觉得向下移动比向上移动频繁,而食指比中指更灵活,强强联合。
cdlnls
348 天前
不知道为啥这么设计,但是不得不说,适应了之后,这套键位确实舒服。可能是向下使用的频率更高吧,加上正好食指也放在 J 上,H L 对应左右,也是相当有趣的,还有就是,H 需要移动手指,正好向左移动也是一个低频操作。

感觉设计这个键位的人也是个人才,它没有采用 WASD 这样的上下左右。
Dropless
348 天前
James369
348 天前
要么 J 要么 K ,按错 J 就换 K ,按错 K 就换 J 。毫无压力,毫无记忆
muxinqi
348 天前
我一开始也不习惯,但是后来自己慢慢合理化了,用的下面这个步骤:
1. 把右手食指、中指、无名指放在方向键上,就假装你在玩跑跑卡丁车,记住哪个手指在按上键。
2. 把右手放回至键盘区域一字排开,按照打字习惯,右手食指放在字母 J 上,看看刚刚按上键的手指,现在在哪里。

当然如果 I J K L 分别对应 ⬆️ ⬅️ ⬇️ ➡️ 的话,我会更习惯(跟方向键体验一样了),但是感觉调整字母 I 的映射,对肌肉记忆改动太大了,如果需要临时用别人电脑就不习惯了。
syfless
348 天前
可能是大部分人按 ⬇️ 的频率比 ⬆️ 多,然后中指比无名指发达
L4Linux
348 天前
@jayeli #5 这还真不是乱说
passive
348 天前
以前键盘就是这样。即使小键盘区的方向键成为现在这种

 上
左下右

形状也才没几年。以前键盘上都是排成一排,
上下左右、左下上右、左上下右…各种组合,每个厂家都不一样
juggtt213
348 天前
点进来这个帖子的时候我也感觉大多数人按下的频率更高。但是又想了一下,如果是用浏览器的 vim 插件,确实按 j 的频率更高,但是用 vim 编码的时候,可能写错了要改的时候按“上”的频率反而会更高一些,要是编码顺利的话换号是用回车
RikkaW
348 天前
古时候的键盘还不是现在这样的

左下右
smdbh
348 天前
JIKL 更好?
Biluesgakki
348 天前
你代码是往下写的 不是往上写的 j 分配个更常用的下很合理
BeijingBaby
348 天前
因为作者用的机器键盘布局是这样

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1005924

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX