编程理想键盘布局

101
我经常听到人们抱怨使用符号较多的编程语言,尤其是C++和C(我不考虑APL),因为需要频繁使用Shift键,所以难以输入。一两年前,我自己也感到厌倦了这种情况,下载了微软的键盘布局创建器,对我的键盘布局进行了一些更改,从那时起,我再也没有回头看过。速度的提升令人惊讶;通过这几个简单的改变,我能够在键入C++代码时提高约30%的速度,当然,这取决于代码的复杂程度;最重要的是,我的日常文本输入速度并未受到影响。
我的问题是:有哪些替代键盘布局用于编程,它们是否获得了普及,其中是否有任何布局仍在现代使用,你是否个人使用过任何修改过的布局,并且如何进一步优化我的布局?
我对标准QWERTY布局进行了以下更改。(我不使用Dvorak,但值得一提的是程序员Dvorak布局。)
  • 将数字与符号交换在顶部行,因为长数字或重复的文本通常会被替换为命名常量;
  • 将反引号与波浪号交换,因为很多语言中反引号很少见,但在C++中析构函数很常见;
  • 将减号与下划线交换,因为下划线在标识符中很常见;
  • 将大括号与方括号交换,因为块比下标更常用;并且
  • 将双引号与单引号交换,因为字符串比字符字面量更常用。

我猜这最后一个布局可能是最有争议的,因为它会干扰书写流畅性,需要使用shift键来输入常用缩写。这种布局显著提高了我在C++、C、Java和Perl中的打字速度,并在LISP和Python中略微提高了速度。


37
也许只是因为我的思维速度有点慢——但在开发软件时,打字速度通常不是我的制约因素。如果是的话,我可能会认为自己做错了什么。 - Lucero
9
@Lucero: 总的来说,不需要,但是当我(终于!)弄清楚我应该做什么时,我能越快、越舒适地打出代码就越好。一旦你完成了所有艰难的思考,有时候只需要大量的编码工作... :-) - T.J. Crowder
3
@Jon:强烈建议在这个问题被视为主观问题并关闭之前,将其更改为社区维基(CW)。毕竟,这是一个主观问题。 - T.J. Crowder
23
@T.J.: 制作CW。一个好的布局问题并不在于原始性能,而在于舒适度——但是舒适度对于性能非常重要。 - Jon Purdy
5
有趣的是你被不少人狠狠地批评了,我建议你忽略他们。这不仅涉及打字速度(如果你可以打得足够快来“随心所欲地编程”,那么速度确实是一个因素),人体工程学更加重要。但速度和人体工程学是相辅相成的:紧张手部的动作执行起来比较慢,疲劳会导致错误,而修复错误会更加劳累你的手。从长远来看,调整键盘布局以适应你的需求可能是预防或避免手部劳损的关键。 - just somebody
显示剩余13条评论
6个回答

32

我仍然认为打字速度不是项目完成所需时间的主要因素。如果是这样,那么就存在一个大问题(数周的编码能节省我们数小时的规划)。

关于你的问题,我更喜欢使用标准布局,因为这意味着当我面对标准键盘布局时,我不必花费前10分钟看起来很傻。

你提出的一些替代方案,例如使用特殊字符的顶行,实际上并没有任何区别,因为另一只手的外侧手指应该同时移动到Shift键上。

在我看来,帮助加速操作的一件事情是只使用键盘快捷键。推荐使用Vim和Emacs。它可以使文本移动变得更快。


27
哦,不,打字速度绝不是瓶颈,但与此同时,为什么要让像键盘这样愚蠢的东西阻碍你呢?我经常使用我的布局和其他布局,所以在它们之间来回切换并没有困扰我;我只是更喜欢我的布局。当然,我必须承认,除了需要查找键序列时,Emacs 让编程变得非常快。 - Jon Purdy
4
左右手同时动作也无所谓:修饰键仍然必须在按键之前按下。这只是毫秒级的差别,但为什么要自寻烦恼呢?用不适合自己的布局进行编程就像在黏键盘上编程一样。 - Jon Purdy
7
我认为,如果你同时记忆多个键盘布局,你会破坏你的肌肉记忆,从而使打字变得更慢。 - JesperE
2
-1:对讨论没有任何贡献(“看起来很蠢”的论点甚至没有一个经验数据支持,这是一种前瞻性的担忧),而且无法修复。 - Evgeni Sergeev
1
每次伸手去括号,我的手腕都会发出响声... 如果你刚开始学习编程,我建议你研究一下正确的打字人体工程学,并学习编程DVORAK。这样更健康,你也不会在23岁得关节炎。 - Thumbz
显示剩余6条评论

22
我会按照以下方式回答你的问题。任务是组织一个键盘,以最小化输入文本时的按键次数和手部移动。下面是可能的解决方案步骤:
制作一个程序:
1. 读取一个包含源代码的文本文件。(越大且来自不同来源越好!) 2. 统计每个符号的使用频率(即其在文本中出现的次数)。 3. (可选)基于第2步:程序为每个符号生成按键次数和手指离中心位置的距离。因此,您将有一个衡量您的键盘布局有效性的标准。
现在,通过手动或编写程序重新定义您的键盘布局。将最常用的符号放在靠近您强壮手的中央位置。第二个符号放在您弱手的中央位置。第三个符号再次放回强手...以此类推。然后,您逐渐从手的中心位置向键盘的更“远”区域移动。当整个键盘都填满时,您可以按下 Shift 键继续分配键。不同之处在于当按下 Shift 键时,您不会为每个符号旋转强手和弱手。首先,您将填充键盘的中央位置,然后再移动到更远的位置。
完成以上步骤后,请再执行第3步,以查看新布局的改进效果。您可能需要始终携带自己的键盘。好处是没有人会碰您的电脑。这将使您看起来像一位专业人士。
最后,不要忘记分享您的发现。

我真的很喜欢这个答案,:P - pjincz
1
如果想要让事情变得更加复杂,可以考虑字符组合,并尝试使手指交替或避免相同手指的击键(例如QWERTY键盘上的"kilo")。 - awe lotta
将源代码文本文件更改为键盘记录器,以获取您按下的快捷键并对其进行优化。 - Kani

18

我目前正在使用变体Colemak布局,并对符号进行了大量更改:

未按SHIFT键:

` - { } [ ] ; < > ( ) _ =
q w f p g j l u y * / # \
a r s t d h n e i o '
z x c v b k m , . !

按下SHIFT键:

~ 1 2 3 4 5 6 7 8 9 0 & +
Q W F P G J L U Y @ ^ $ |
A R S T D H N E I O "
Z X C V B K M % : ?

也许我会恢复/键...

但这并不基于任何可靠的研究,我希望看到一个针对源代码语料库进行优化(优化包括手的交替等因素,同时还需要考虑ZXCV保存等因素)的布局,因为所有这些布局似乎都是针对散文优化的。例如在C语言中,'f'是一个非常常见的字母(if, for)。

更新:我目前正在使用

` - { } [ ] @ < > ( ) _ =
q w k r g y u l p * ; #
a s f t d h n e i o ' \
\ z x c v b j m , . /

按下SHIFT键:

这是基于Carpalx的 6 键交换部分优化,保留了常用的剪切/复制/粘贴/撤销快捷键,并进行了修改以更好地访问常用的编程字符。

1
我喜欢将字符设置为默认,而不是数字。例如:按下shift+1可以得到数字1,而按下1则会得到符号! - Ray

17

制作一个简单的键盘记录器,然后统计每个键按下的次数。运行它一两天,然后将输出保存到文本文件中。每隔一段时间执行此操作。不管使用哪种布局,您只需查看使用最多的键即可。

如果您想要制作一个好的布局,就不能害怕离开常规。我建议在主键盘排中放置前11个键,然后将下一个前11个键作为顶行(将回车键上面的2个键留作最少使用的键),然后将第三个前11个键作为底部排。现在应该有4个键剩余。将它们放入-=和]\插槽中。恭喜!您现在已经为自己制作了一个很棒的键盘布局! = D


2
非常好的答案:键盘应该量身定制给所有者。 - Julien__
2
对于键盘使用统计,已经有一些很好的程序可以显示热图,比如这个:WhatPulse - Mihai MATEI
【访问旧帖评论】这实际上是一个非常酷(或者热烈的;)想法。我得自己去了解一下! - Tgwizman

11

总的来说,我认为拥有一个好的文本编辑器并且知道如何使用它比试图提高您的打字速度更重要。能够记录和重放宏有时是救命稻草,而一系列快捷指令的代码片段也很方便,因为通常有语言限制,无法将其转化为库。

更一般地说,我认为真正提高生产力的因素都与知识相关...

  • 了解可用的工具和库以及如何使用它们。
  • 了解你正在处理的代码的整体结构,而不仅仅是你自己的那一部分。
  • 了解关键算法、设计模式和习惯用法,以免重复发明。
  • 对规则有足够的了解,以便可以灵活运用,知道何时可以打破规则。
  • 了解你的同事和他们的优缺点等等 - 也就是知道何时自己解决问题,以及何时和谁请教。

顺便说一句,我并不自称在所有这些方面都很擅长。我总是过于倾向于自己解决问题,并且有着过于强烈的重新发明轮子和大型架构计划的倾向。

无论如何,我只是怀疑花时间去改变和学习键盘布局会分散我们对更重要问题的注意力。


1
我完全同意你的观点!善用工具和习语是良好编程的体现。但这是一个关于非常具体的事情的问题,两年前花费的15分钟已经为我节省了相当多的时间和烦恼。 - Jon Purdy
@Jon - 我明白你的意思,但我认为我的打字习惯已经被编程得很深了 - 改变会是一项艰苦的工作。 - user180247
-1:听起来不像是基于使用替代键盘布局的经验;与我的经验相矛盾。偏离了主题。没有提供具体的行动计划。无法修复。 - Evgeni Sergeev

-5
改变键盘布局是个不好的主意,因为它可能会提高你在某一种键盘上的打字速度,但会严重损害你在其他键盘或没有特殊键盘布局的电脑上的打字速度。我发现通常最好适应默认设置,而不是到处更改它们。(就我个人而言,我的手指非常倾向于Emacs,这会导致在其他地方打字时出现很多摩擦。)

8
我可以很高兴地在两种布局之间进行切换。Jon报告说已经“一两年”了,他来回切换没有任何问题。基本上就是因人而异。 - T.J. Crowder
5
我发现在不同的键盘和键盘布局之间切换,就像在不同语言之间交流一样容易/困难--如果你熟练掌握它们,在几分钟内就可以恢复完全思维速度。 - liori
2
@liori:说得好,但是它是几分钟或几秒钟的时间取决于我有多累。 :P - Jon Purdy
2
@Jason D:观点很有道理,但我很高兴它们不适用于我……我很少使用别人的电脑。 - liori
2
@Liori。许多公司都有配备共享电脑的会议室。许多开发人员在共同解决难题时,也会让其他人“驾驶”他们的电脑。如果由于您的非标准布局而被拒绝触碰您的电脑,则可能会妨碍合作解决问题。对于您的雇主来说,这将消除您选择的布局所带来的大部分个人收益。请记住,开发通常不是一个人对抗世界,而是团队完成的。 - Jason D
显示剩余2条评论

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