Vim用户,你们右手放在哪里?

131

长期使用vim的用户,在普通模式下你是把手指放在jkl;还是hjkl上?

标准的打字教学告诉我们右手主位置是食指放在键盘上的j键,因此你的手指应该放在jkl;上。

但标准的vim动作键是hjkl

我在10多年后重新开始使用vim (哦我的天啊,没注意到自己已经老了),发现自己更倾向于使用hjkl …… 但这使得输入大写字母、括号等变得更加困难。我想训练自己现在使用最有效/实用的方法,而不是以后需要重新训练。

长期且专注地使用vim的用户,有什么最佳实践吗?


注意:

  1. How do touch typists navigate in vi?有很大的重叠。
  2. 我认为这通过了“主观”测试,因为它涉及刻意培养一种“无意识最佳实践”,而不仅仅是关于人们的偏好。

44
这不算是一个真正的问题吗?他在问你应该把手指放在哪里,这是完全可以回答的。 - alternative
在这种情况下,“最佳实践”是主观的。人与人不同,会将手放在他们感到舒服的位置。 - Randy Morris
1
我正在开始学习编程,也遇到了同样的问题。对于在计算机键盘上进行最佳实践打字来说,葡萄牙语键盘的jklç更好用,感觉很自然。 我不想让vim让我忘记我花费了很多时间学习和练习的正确打字方式。 - ancm
2
@RandyMorris 当然,每个人都是不同的,他们应该做最适合自己的事情,但这并不意味着在大多数情况下某些做法更好,比如一般触摸打字的主键。因此,我不认为这个问题不能回答,因为它是主观的,如果确实如此,那么应该给出答案,并提供信息以证明为什么没有明确的最佳实践。 - jonvw
5个回答

141

我认为在vi编辑器中,jkl;的使用方式更为合适。首先,hl并不那么重要。而web对于水平导航来说更加有用。此外,如果语言需要,;也很容易输入。在键盘上使用弱手指按下k会让手感到疼痛,没有必要将最强的手指放在h上,因为它应该放在四个键中最常用的j上。


1
哦,糟糕。我已经使用vim几年了,一直都是用hjkl来代替箭头键。虽然我理解你提出的方法更有效率,但我怀疑我永远不会有足够的勇气去改变它。 - Mikhail Kalashnikov
7
哦天啊,我开始进入了什么兔子洞啊... - Jason Kelley
加上多年的Nethack !!! - xpmatteo
这真是太连贯了!今天我在思考这个问题,一直习惯使用hjkl,现在是时候变成jkl了。 - Nicolas NZ

19

介绍

之前的两种方案都不是百分之百令人满意的。我提出了第三种方式,它结合了两者的优点。

我的推荐: "下-上-左-右"

保持上/下在原位,然后将第三和第四个手指移到

然后,为了避免覆盖基本的Vim功能: 将以前在;上的任何东西移到现在为空的h按钮上

作为一个可爱的额外福利,"l"键现在代表"" ;)

noremap l h
noremap ; l
noremap h ;



之前的“亚军”,两者都采用“左-下-上-右”布局:


选择1: "hjkl"

@alternative的建议,按键保持默认(hjkl),右手保持在主键盘行(jkl;)

  • 利:
    • j (下)k (上)仍然在您的主要2个手指上,它们应该在那里
  • 弊:
    • 您必须为 h (左) 到达。即使这并不像 w,e,b 那样使用频繁,但它仍然是一个不便的箭头按钮,最好放在主键盘行上
    • 基本上:所有4个手指都没有自然地放置在箭头按钮上。这让我的手很困惑


选择 2: "jkl;"

将这 4 个映射绑定键 滑动到一个按键上,使它们位于主键区:

noremap ; l
noremap l k
noremap k j
noremap j h

  • 优点:
    • 没有手指混淆;所有箭头都在自然地手指下面
  • 缺点:
    • 如 @alternative 所说,在第二和第三个手指上的上 / 下非常 "不优化"
    • 同样,最强的手指在左边也是一种浪费

1
谢谢。关于你的建议,到目前为止唯一不起作用的是使用“Ctrl + W + <direction>”在分屏之间切换。 - Rafał Cieślak
我想补充一下,我也接受了你推荐的按键映射。我使用的是分离式键盘,其中箭头键模仿vim(现在是新版!)并需要按下修饰键。你的建议还有一个额外的好处——我是偶然发现的,因为我一直都用箭头键——就是less的上下映射也是jk - Krisztián Szegi

14

我以普通打字员的方式,将手放在主键位上。很少使用 H 键进行移动,因为向左移动一个空格通常不是一种有效的移动方式(也不符合 Vim 的本质)。


10

5

虽然我理解 Vim 的哲学是在主键旁边放置所有的移动方式,但我认为 hjkl 不太直观。我认为更合理的映射方式应该类似于 wasd,使用 ijkl

    nnoremap j h
    nnoremap k j
    nnoremap i k

我发现这个非常容易操作,自然流畅。
j:left
i:up
k:down
l:right

对于切换插入/正常模式,我个人使用 Alt-e 键,因为我几乎总是使用 Gvim,并且不必担心某些终端无法识别 Alt 键。

    nnoremap <A-e> i
    inoremap <A-e> <esc>l

3
听起来可疑地像是 Emacs! - rlms

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接