用于编程的理想键盘布局[关闭]


87

我经常听到抱怨说,为了简洁起见,大量使用符号的编程语言很难键入,因为它们需要频繁使用Shift键,因此很难键入。一两年前,我本人对此感到厌倦,下载了Microsoft的Keyboard Layout Creator,对我的布局进行了一些更改,并且从未回头。速度差异惊人。通过这些简单的更改,我就能以大约30%的速度键入C ++代码,具体取决于它的毛发程度。最重要的是,我在普通运行文本中的键入速度不会受到影响。

我的问题是:存在哪些可供编程使用的备用键盘布局,这些布局已变得越来越流行,其中任何一种仍在现代使用,您个人是否使用任何更改的布局,以及如何进一步优化我的布局?

我对标准QWERTY布局进行了以下更改。(我不使用Dvorak,但是有一个值得一提的程序员Dvorak布局。)

  • 在第一行中将数字与符号交换,因为长或重复的文字数字通常会替换为命名常量;
  • 用波浪号交换反引号,因为反引号在许多语言中很少见,但析构函数在C ++中很常见;
  • 用下划线交换减号,因为下划线在标识符中很常见。
  • 用方括号交换花括号,因为块比下标更常见;和
  • 用双引号替换双引号,因为字符串比字符文字更常见。

我怀疑这最后一个可能会引起最大争议,因为它通过要求使用shift来键入普通收缩来最大程度地干扰正在运行的文本。这种布局大大提高了我在C ++,C,Java和Perl中的打字速度,并在LISP和Python中有所提高。


32
也许只是我想的太慢了-但是原始打字速度通常不是开发软件时的限制因素。如果是这样,我可能会认为我做错了什么。
Lucero 2010年

9
@Lucero:总的来说,不,但是当我(终于!)弄清楚我应该做的事情时,我输入的速度越快越舒适,越好。一旦您做了所有艰苦的思考,有时就需要做很多代码
磨练

3
@Jon:强烈建议在将其作为主观关闭之前将其作为CW(毕竟是这样)。
TJ Crowder'2

20
@TJ:制作了CW。好的布局与其说是一种舒适感,不如说是原始性能的问题,但是舒适性对性能至关重要。
乔恩·普迪

3
有趣的是,您被很多人抨击,我建议不要理them他们。不仅是打字速度(如果可以输入足够多的字符以能够“按照您的想法进行编程”,这就是一个因素),人机工程学比这要重要。但是速度和人机工程学是并驾齐驱的:使您的手受力的动作执行起来很慢,疲劳会导致错误,并给您的手增加更多的负担。从长远来看,调整键盘布局以满足您的需求可能是RSI或没有RSI之间的区别。
某人2010年

Answers:


30

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

关于您的问题,我更喜欢使用标准布局,因为这意味着当呈现标准键盘布局时,我不必花前10分钟就显得愚蠢。

您建议的一些替代方法,例如,带有特殊字符的第一行没有太大的区别,因为另一方面,外手指应同时移动。

恕我直言,帮助上述链接布局的一件事是仅使用键盘快捷键。建议使用Vim和Emacs。它使文本移动更快。


20
哦,不,打字速度绝对不是瓶颈,但是同时,为什么要让像键盘这样愚蠢的东西挡在您的面前?我经常在布局和其他布局之间来回切换很容易,因为我经常使用两者。我只是喜欢我的。而且我必须承认,当我不需要查找键序列时,emacs可以使编程尽可能快。
乔恩·普迪

4
哦,左右手的同时移动也没有什么不同:按下键之前,必须按下修改器。当然,相差毫秒,但为什么又会阻碍自己呢?使用对您不起作用的布局进行编程就像在粘性键盘上进行编程一样。
乔恩·普迪

6
我坚持认为,通过在内存中保留几种键盘布局,会破坏肌肉记忆,从而使输入速度变慢。
JesperE

1
Shift键的另一个问题是交替的序列,因此两只手都从第一行跳到他们的Shift键上,然后又向后移。我并不是说担心这很普遍,但是像“(!* x)”之类的东西可能会令人讨厌。
Steve314 2010年

1
-1:对讨论没有任何帮助(“愚蠢”的论点甚至没有经验中的一个数据作为支持,这是一种前瞻性的担忧)并且无法解决。
Evgeni Sergeev 2014年

16

我将通过以下方式解决您的问题。任务是组织键盘,以使给定文本的键击和手部移动最小化。

迈向可能的解决方案。编写一个程序,该程序:

  1. 获取带有源代码的文本文件。(越大越好,来自各种渠道!)
  2. 计算每个符号的使用频率(其在文本中的出现)。
  3. (可选)基于第2步:程序为每个符号生成按键计数以及手离中心位置的距离。结果,您将可以衡量键盘布局的有效性。

现在,手动或通过编写程序以以下方式重新定义布局。将最常用的符号放在靠近强手的中央位置。第二个符号位于中间位置的弱手。第三个符号可以追溯到您的强牌...等等。然后,您逐渐从手的中心位置移到键盘的“较远”区域。当所有键盘都已满时,您可以继续分配键的过程,但是这次按下Shift键。另一个不同之处是,当Shift向下时,您不会为每个符号旋转强手和弱手。首先按下Shift键,您将填写键盘的中心位置,然后移至更远的位置。

当您完成所有这些操作后,再次对新布局执行步骤3,以查看如何改进布局。

您可能始终需要随身携带键盘。从好的方面来说,没有人会触摸您的计算机。它会让您看起来像专业人士。

最后,不要忘记分享您的发现。


我真的很喜欢这个答案,:P
pjincz

13

我现在正在玩Colemak布局的变体,其中符号的变化很大:

没有SHIFT:

`-{} []; <>()_ =
qwfpgjluy * /#\
arstdhneio'zxcvbkm
,。!

使用SHIFT:

〜1 2 3 4 5 6 7 8 9 0&+
QWFPGJLUY @ ^ $ |
ARSTDHNEIO“
ZXCVBKM%:?

也许我会还原/键...

但这不是基于任何合理的研究,我也很想看到使用基于源代码的语料库对布局进行了优化(优化包括手更改等内容,还包括ZXCV保存等),因为所有这些布局似乎都可以仅针对散文进行优化。例如,“ f”是C语言中一个非常常见的字母(如果是)。

更新:我正在使用

`-{} [] @ <>()_ =
qwkrgyulp *; #
asftdhneio'\
\ zxcvbjm。/

使用SHIFT:

〜1 2 3 4 5 6 7 8 9 0 ^ +
QWKRGYULP&!$
ASFTDHNEIO“ |
| ZXCVBJM%:?

这是基于Carpalx进行的6键交换局部优化,保留了通常的“剪切/复制/粘贴/撤消”快捷方式,并对其进行了修改以更好地访问常规编程字符。


1
我喜欢使字符默认为数字的想法。即:shift + 1得到一个,按1给你!

12

创建一个简单的按键记录器,然后计算每个按键被按下的次数。运行一两天,然后将输出保存到文本文件。每隔一段时间执行一次。使用哪种布局都没有关系,因为您只看到最经常使用哪些键。

如果您想进行良好的布局,则可以不必担心偏离常规。我建议将前11个键放在首页行中,然后将下11个键放在顶部行中(将回车键上方的2个键保留为最不常用的键),然后将第3个前11个键保留在最下面的行中。现在应该剩下4个键了。将它们放入-=和] \插槽中。恭喜!现在,您已经为自己的目的制作了出色的键盘布局!= D


1
很好的答案:键盘应该交给所有者
Julien__ '16

1
对于键盘使用情况的统计,已经有不错的程序可以显示热图,例如:WhatPulse
Mihai MATEI

[访问旧帖子评论]这实际上是一个很酷(或激怒;)的想法。我必须亲自检查一下!
Tgwizman

9

总的来说,我认为拥有一个好的文本编辑器并知道如何使用它比尝试提高键入速度要好。能够记录和重播宏有时是一种救命稻草的方法,并且选择快捷方式分配的代码段可能很方便,因为通常对语言的限制是可以转换为库的。

总的来说,我认为真正的生产力提升者全都是知识。

  • 了解哪些工具和库可用以及如何使用它们。
  • 了解您正在处理的代码的整体结构,而不仅仅是一点点。
  • 了解关键算法,设计模式和惯用语,因此您无需重新发明它们。
  • 足够了解规则,您可以变得灵活-您知道何时打破规则。
  • 了解您的同事及其优势,劣势等-即知道什么时候该弄清楚自己,也知道什么时候该问谁。

FWIW,我并不是声称自己在所有这些方面都很强。我一直偏向于自己解决问题,并且倾向于重新发明轮子和宏伟的建筑方案。

无论如何,我只是怀疑花在更改和学习键盘布局上的时间会分散更重要的问题。


我在所有方面都同意你的看法!充分利用工具和习惯用法就是好的编程。但这是一个非常具体的问题,嘿,两年前的十五分钟让我省下了不少挫败感。
乔恩·普迪

@Jon-我明白了,但是我认为到目前为止我的打字习惯已经非常强大了-改变将是艰巨的工作。
2010年

-1:听起来不像是基于其他键盘布局的经验;违背了我对他们的经验。题外话超出了主题。不提供具体的行动项目。无法修复。
Evgeni Sergeev 2014年

-5

更改键盘布局是一个坏主意,因为它可能会提高您在一个键盘上的打字速度,但会严重损害您在其他键盘或没有特殊键盘布局的计算机上的打字速度。我发现通常最好将自己调整为默认值,因为必须在各处进行更改。(就我个人而言,我的手指偏重于Emacs,这会在其他地方引起很多打字摩擦。)


6
我很高兴在两种布局之间切换。乔恩(Jon)报告说已经有“一年或两年”了,他来回走也没问题。YMMV,基本上。
TJ人群

4
我发现在键盘和键盘布局之间进行切换就像在不同语言之间进行切换一样容易/困难-如果您很熟悉键盘,几分钟后您便可以重新思考。
liori 2010年

1
@liori:说得好,尽管是几分钟还是几秒钟完全取决于我的疲劳程度。:P
乔恩·普迪

1
@liori “几分钟后……”看来(跨国)公司和国家出于多种目的而对语言进行标准化。1)通讯速度。2)沟通的准确性。我怀疑标准化键盘布局会看到类似的好处。
詹森·D 2010年

2
@Jason D:有效点,但我很高兴它们不适用于我...我很少使用别人的计算机。
liori 2010年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.