SSD Nodes Learn 🎉 VPS $5.50/月起
指南 Matt Connor作者: Matt Connor

Colemak、Dvorak 和 QWERTY 怎么选?

比较 Colemak、Dvorak 与 QWERTY 的设计目标、按键改动和快捷键兼容性,说明打字速度证据为何有限,以及在非自有设备上切换的实际成本。

简短结论

对大多数人来说,Colemak、Dvorak 和 QWERTY 之间的选择,结论并不复杂:继续使用 QWERTY,因为迁移成本是数周的低效工作,而收益很小且难以量化。如果确实想更换,Colemak 的迁移成本更低。它保留了 QWERTY 中30个字母和标点键里的13个键的位置不变,也保留了复制和粘贴键的位置。Dvorak 的改动更大,但支持范围最广,因为所有主流操作系统都已支持它数十年。两种布局本身都不会让您的打字速度更快。它们改变的是手指移动的距离,以及您在长时间工作结束时的手感。

本页用于帮助您做出选择。如果您已经决定使用 Colemak,并且需要相关命令,请参阅Linux 上的 Colemak 配置指南

每种布局的设计目标

QWERTY 源自 1870 年代的 Sholes and Glidden 打字机,其设计目标是解决机械问题。在那种打字机上,每个按键都会带动一个金属字杆从字杆架中向上摆动,敲击纸张。如果相邻的两个字杆被快速连续击打,就可能相互碰撞并卡住。将常见的字母组合分开,可以减少卡键。流行说法称 QWERTY 的设计目的是让打字员变慢,但这只是对上述历史的片面解读。历史学家还发现,这种排列的部分设计受到电报操作员转录莫尔斯电码方式的影响。对您而言,关键点很简单:这种布局受 1878 年的机械结构限制,随后又因数十年的培训而固定下来;它没有任何部分是针对无活动部件的键盘优化的。

Dvorak 是 August Dvorak 和 William Dealey 于 1936 年设计的替代布局。其设计规则可以直接从布局中看出。5 个元音都位于左侧主行,即 AOEUI;最常见的英语辅音位于右侧主行,即 DHTNS。这样,常见单词通常会在左右手之间交替输入,最有力的手指也承担了大部分工作。在这3种布局中,Dvorak 的切换影响也大得多,因为只有2个按键 A 和 M 保留了 QWERTY 中的位置。

Colemak 由 Shai Coleman 于 2006 年发布,其设计约束就是降低切换成本。左侧主行依次为 A R S T D,右侧主行依次为 H N E I O,将最常见的英语字母放在手指下方,同时尽量少移动其他按键。底行保留 QWERTY 中的 Z X C V B 位置。Colemak 还将 Caps Lock 重新映射为 Backspace;这是一个可以在任何布局中单独采用的习惯,也可以完全忽略。

Colemak 与 Dvorak、QWERTY 对比:实际移动了多少个按键

统计包含 26 个字母键和 4 个标点键的 3 排字母键,然后逐个位置比较每种布局与 QWERTY 的差异。快捷键列统计 Z、X、C 和 V 中有多少个仍处于 QWERTY 中的位置,因为在大多数系统中,这 4 个键分别用于撤销、剪切、复制和粘贴。

ChartKeys that move from QWERTY, out of 30, and shortcut keys kept in place
The data behind this chart
[
  {
    "label": "QWERTY",
    "keys_moved_from_qwerty": 0,
    "shortcut_keys_kept": 4
  },
  {
    "label": "Colemak",
    "keys_moved_from_qwerty": 17,
    "shortcut_keys_kept": 4
  },
  {
    "label": "Dvorak",
    "keys_moved_from_qwerty": 28,
    "shortcut_keys_kept": 0
  }
]

Colemak 移动了 17 个按键。Dvorak 移动了 28 个按键。两者的实际差异就在这里。每个移动的按键都对应一个需要重新建立的操作习惯,而手指仍会伸向原来的位置,因此这个数量可以粗略反映最初的不适感会持续多久。但它无法说明哪种布局更好。

编辑快捷键是否仍在预期位置?

Colemak 保留了 Z、X、C 和 V 在 QWERTY 中的位置,因此 Ctrl+Z、Ctrl+X、Ctrl+C 和 Ctrl+V 仍由同一只手的相同手指按下。Dvorak 保留其中 0 个。在 Dvorak 中,字母 C 位于 QWERTY 的 I 键位置,V 位于 QWERTY 的句号键位置,X 位于 QWERTY 的 B 键下方,Z 位于 QWERTY 的斜杠键位置。复制和粘贴需要双手操作。

这在终端中比在文字处理器中更重要。服务器运维人员每天会数百次按下 Ctrl+C 来中断正在运行的命令,以及按下 Ctrl+D 来关闭标准输入;而在 Dvorak 中,这两个快捷键都移到了右手:C 移到 QWERTY 的 I 键,D 移到 QWERTY 的 H 键。macOS 提供了一个变体,按住 Command 键时会恢复为 QWERTY。Linux 没有针对 Ctrl 键的标准等效方案,因此在 Dvorak 中快捷键会移动,并且会一直保持移动后的位置。

Vim 和 less 使用 h、j、k 和 l 移动光标;选择这些字母是因为它们位于 QWERTY 键盘的右手下方。这两种替代布局都会破坏这一设置。在 Colemak 中,实体 QWERTY 键盘上 h、j、k 和 l 键印刷的字母分别是 h、n、e 和 i,通常的修复方法是将移动按键重新映射为这四个键。在 Dvorak 中,这四个实体按键输入的分别是 d、h、t 和 n。无论采用哪种修复方式,只需在 vimrc 中添加几行配置;但连接到他人的计算机并使用默认配置时,这些设置就不再生效。

打字速度方面的证据不足

论证中的一部分是算术问题,没有争议。给定一种键盘布局和一段文本,可以计算手指移动的总距离,以及同一根手指连续输入两个字母的次数。对于普通英文散文,这两个数字在 Dvorak 和 Colemak 中都低于 QWERTY,布局分析工具对这一趋势也得出了相同结论。不过,这些结果取决于用于计算的文本。您的源代码、编程语言和变量名并不是那段文本。

有争议的是,这些算术结果是否会转化为速度优势。关于 Dvorak,最有力的主张来自第二次世界大战期间美国海军开展的一项研究。该研究报告称,重新训练可以带来显著提升。但研究由 August Dvorak 亲自监督,因此不能算作独立证据。1956 年,Earle Strong 为 General Services Administration 开展了一项受控的重新训练研究,结果发现,让 QWERTY 打字员进行同样时长的额外练习,效果并不逊于改学 Dvorak。1990 年,经济学家 Stan Liebowitz 和 Stephen Margolis 在一篇名为《The Fable of the Keys》的论文中汇总了这些批评。该论文本身也存在争议,因为它真正讨论的主题是市场锁定,而不是键盘。90 年后,仍然没有大规模、控制良好的试验证明,替代布局能让人打字更快。

谨慎看待速度方面的主张,还有一个更简单的理由。有人使用 QWERTY 的打字速度超过每分钟 150 个单词。如果您的速度是每分钟 60 或 70 个单词,限制您的因素就不是键盘布局。

舒适度和手部损伤是更难回答的问题,相关证据也更少。确实有人表示,切换布局后手部疼痛减轻了,这一点值得认真对待。但改用新布局的人通常会同时改变多个因素。新键盘、不同的桌面高度、更多休息时间,以及连续数周有意放慢打字速度,可能都发生在同一个月内,任何一个因素都可能是原因。如果您是因为疼痛才考虑切换布局,应先调整坐姿和工作量,因为这两方面有更充分的证据支持,而且不需要花费任何成本。

真正的切换成本

最初几天,您的输入速度预计会像初学者一样,约为每分钟 15 个单词。通常需要 2 到 4 周,您才不会再把全部注意力都放在键位布局上。恢复到原来的速度,通常需要每天使用 1 到 3 个月。这些数字来自实际完成切换的人,而不是研究结果,因此应将其视为范围,而不是承诺。

让人意外的是干扰问题。您的双手不会学会“Colemak”,而是学会每个按键对应的一个位置。隔几个小时在两种布局之间切换,会让两套键位映射都掌握得不牢。为处理紧急任务切回 QWERTY,然后再切回来,是学习速度最慢的方式。通常有两种可行方法:一次性切换,并接受那段难熬的一周;或者严格分开使用,让一把实体键盘始终对应一种布局,使使用场景告诉您的双手应加载哪套键位映射。

大多数放弃的人都发生在速度下滑期。他们放弃通常是因为那一周很忙,而不是因为布局不适合自己。因此,选择切换时机是整个切换过程中最重要的决定。请在清闲的一周开始。不要在截止日期前一周开始,也不要在值班的一周开始。

您对 QWERTY 的熟练程度通常不会消失。大多数切换者表示,经过几天使用后就能恢复,但起初速度会比以前慢,也会出现错误。这一点值得了解,因为失去原有输入能力是人们最担心的事情,而事实证明,这恰恰是最不容易发生的情况。

客户端还是服务器:重映射应该放在哪里?

几乎总是客户端。键盘布局应用于连接键盘的那台机器,其他地方不会应用。当您按下按键时,本地系统会将该按键位置转换为字符,然后 承载您按键输入的 SSH 会话 将该字符以字节形式发送到服务器。服务器根本看不到按键动作。因此,在远程主机上运行 localectl set-keymap dvorak 不会改变您的输入通过 SSH 到达服务器的方式;而将工作站设置为 Colemak 后,您登录的每台主机都会收到 Colemak 输入,无需在这些主机上进行任何配置。

服务器自身的键盘映射只在两种情况下有用:连接到该机器的实体键盘,以及服务提供商通过浏览器或串行链路提供的控制台。对于 VPS,这指的是救援控制台,而这正是您最不应进行试验的场景。

localectl status
localectl list-keymaps | grep -i dvorak

localectl status 会同时显示两项设置:文本控制台使用的 VC Keymap,以及图形会话使用的 X11 Layoutlist-keymaps 会列出系统实际安装的控制台键盘映射名称。通过这一步可以避免设置不存在的名称。即使图形会话支持 Colemak,控制台键盘映射中也不一定包含它。因此,在假定自己的布局可用之前,请先对其运行该 grep 命令。

在桌面环境中,setxkbmap -layout us -variant colemak 会更改正在运行的 X 会话的布局,localectl set-x11-keymap us pc105 colemak 会使该选择在重启后仍然生效。在 Wayland 下,键盘映射由合成器管理,因此 setxkbmap 不适用。此时应在桌面环境的输入设置中配置,或在 localectl 中配置。完整步骤(包括如何处理 Caps Lock)请参阅 Linux 上的 Colemak 配置指南

键盘固件如何绕开整个问题

如果您需要登录多台机器,应将布局设置在键盘中,而不是各个操作系统中。可编程键盘会保存自己的映射,并发送目标字母对应的按键代码,因此每台主机看到的都是输入普通字母的普通键盘。主机无需进行任何配置,重装系统时也不会遗忘相关设置。这还适用于完全无法配置的机器:同事的笔记本电脑、UEFI 设置界面、救援镜像,或您无权修改系统设置的主机。对于需要 维护数十台 Linux 服务器 的人员来说,这意味着只需购买一次,而不必在每台机器上维护一项配置。

常见方案是使用运行 QMK 的键盘,或使用其无线版本 ZMK。两者都是由您自行刷写的开源固件;VIA 和 Vial 则是图形化编辑器,可以直接写入更改,无需重新构建。许多主流键盘也随附厂商软件,可将重新映射配置保存在键盘中。其限制也很明确:笔记本电脑的内置键盘通常无法实现这一点。因此,插入外接键盘时可以使用您的布局,未插入时则只能使用 QWERTY;这本身也会造成另一种干扰。

The rescue console is a real operational risk

The failure looks like this. A server does not come back from a reboot, you open the provider's web console, and you have to type a root password and a few filesystem commands with a layout you no longer type well. Two things can go wrong at the same time. Your muscle memory is now the new layout, and the console may not honour it.

Browser consoles differ in what they send. Some forward the character your local system produced, in which case your client side remap follows you. Others forward the key position and assume a US QWERTY map on the far side, in which case your Colemak keyboard types QWERTY letters into the console. You cannot tell which kind you have by reading the control panel. Test it while the machine is healthy: open the console, log in, type a sentence, and look at what appears. Do that now, not during an outage.

Then remove the parts you can. Log in with keys so that ordinary access never asks you to type a password, and treat key management across your servers as part of the recovery plan rather than a convenience. Keep the rescue password somewhere you can paste from, because most browser consoles have a send text or paste function. And keep some ability to find QWERTY letters by looking at the keyboard, because reading a layout chart off your phone at two in the morning is slow.

Encrypted disks add one more trap. The passphrase prompt at boot runs from the initial ram disk, before your normal keymap is loaded, so it uses whatever map was built into that image. On Debian and Ubuntu that is the built in US QWERTY map by default. The setting is KEYMAP= in /etc/initramfs-tools/initramfs.conf, and it ships as n. Set it to y, run sudo update-initramfs -u, then reboot and confirm the passphrase prompt takes your layout before you trust it. A machine that will not unlock is a machine you have to rebuild.

Colemak-DH 与其他布局

可选项不止三个。Colemak-DH 也称 Mod-DH,是 Colemak 最常见的改进版本。在标准 Colemak 中,字母 D 和 H 位于主行中间的列,食指需要向侧面伸展才能按到,而不是向内弯曲。Mod-DH 将这两个字母移到食指下方的底行,使左侧主行变为 A R S T G,右侧主行变为 M N E I O。Mod-DH 有两个版本:一个适用于常见的错列键盘,另一个适用于正交键盘和列错列键盘。应根据硬件选择匹配的版本。

除此之外,还有 Workman、Norman、Canary、Graphite,以及布局优化器生成的许多其他设计。Programmer Dvorak 重新排列数字行和符号,适合输入标点多于 prose 的用户。其他语言也有各自的方案,例如法语使用 bépo,德语使用 Neo。实际筛选标准是可用性。Dvorak 几乎随处可用,包括手机键盘和控制台键位映射。Colemak 随 X 键盘配置数据一起提供,所有 Linux 桌面都会读取这些数据。Colemak-DH 较晚才加入这些数据,因此在较旧的发行版上,您可能仍需从项目中安装布局文件。社区布局是需要复制到每台机器上的文件,或者需要写入键盘固件。

应该选择哪一种?

如果当前没有问题,就继续使用 QWERTY。切换需要数周时间,而关于它能提高速度的证据并不充分,因此仅仅对当前布局有些不满,还不足以成为切换的理由。

如果希望以最低成本重新排列按键,请选择 Colemak。13 个按键保持不变,编辑快捷键保持不变,而且在任何 Linux 桌面环境中只需修改一行配置。

如果重视能够从任何机器和任何操作系统上已有的菜单设置键盘布局,并且可以接受重新学习快捷键,请选择 Dvorak。

如果已经准备购买可编程键盘,请选择 Colemak-DH。固件解决了可用性问题,因此可以直接采用这一改进方案。

无论选择哪一种,都应在开始前确定映射配置的位置。如果您全天使用全职终端工作台,并且经常登录多台机器,键盘是更合适的配置位置。如果只使用一台笔记本电脑,配置在操作系统中即可。然后规划恢复路径,并在真正需要之前完成测试。

FAQ

Colemak 或 Dvorak 实际上比 QWERTY 更快吗?

没有可靠证据表明其中任何一种布局都能让您打字更快。可以测量的是按键次数:对于英文散文,两种布局都比 QWERTY 让更多按键位于基准行,并减少手指移动距离。但大型、控制良好的试验从未证明这会带来更高的每分钟单词数。最常被引用的 Dvorak 海军研究由 Dvorak 本人负责监督;美国总务管理局的 Earle Strong 在 1956 年进行的研究发现,在让 QWERTY 打字员接受同等额外练习后,Dvorak 没有优势。使用 QWERTY 达到每分钟 150 个以上单词的人并不少见,因此如果您的速度是每分钟 70 个单词,限制因素并不是键盘布局。

学习新的键盘布局需要多长时间?

预计需要几天才能以接近每分钟 15 个单词的速度打字,需要 2 到 4 周才能不再完全依赖注意力,需要 1 到 3 个月才能恢复原来的速度。这些是报告中的范围,不是研究结果。更大的风险是相互干扰:白天在两种布局之间切换,会让两种布局都不熟练。因此,您可以一次性切换并接受这一周的低速期,也可以严格区分,让一把实体键盘始终对应一种布局。大多数半途放弃的人都是在低速期放弃的,因为那一周事务繁忙,所以请从相对空闲的一周开始。

我的键盘布局会通过 SSH 跟随我吗?

会,而且服务器无法控制这一点。键盘布局应用在连接键盘的那台计算机上。本地系统将按键转换为字符,SSH 再将该字符作为字节发送,因此远程主机看不到按键位置。在服务器上设置键盘映射不会改变 SSH 用户的输入。服务器自身的键盘映射只适用于直接连接的键盘,或服务商通过浏览器或串行链路提供给您的控制台。

Ctrl+C 以及 vim 的 h、j、k、l 键会怎样?

Colemak 保留 Z、X、C 和 V 在 QWERTY 中的位置,因此标准编辑快捷键不会移动。Dvorak 会移动这 4 个键:C 位于 QWERTY 的 I 键位置,V 位于 QWERTY 的句号键位置,X 位于 QWERTY 的 B 键下方,Z 位于 QWERTY 的斜杠键位置。Ctrl+D 会移动到 QWERTY 的 H 键位置,这在 shell 中很重要。两种布局都会破坏光标移动键位。Colemak 用户通常将移动功能重新映射为 h、n、e 和 i,因为这些字母印在实体 QWERTY 键盘的 h、j、k 和 l 键上;Dvorak 用户则出于同样原因使用 d、h、t 和 n。

切换布局后,如何确保救援控制台仍可用?

请趁服务器运行正常时立即测试。打开服务商的控制台,登录并输入一句话,因为有些控制台会转发客户端生成的字符,而另一些会转发按键位置,并在远端按 US QWERTY 解释。请使用 SSH 密钥登录,确保日常访问无需输入密码;同时将救援密码保存到可以粘贴的位置,因为大多数浏览器控制台都支持粘贴或发送文本。如果磁盘已加密,启动时的密码短语提示会使用初始内存盘中内置的键盘映射。在 Debian 和 Ubuntu 上,这意味着在 /etc/initramfs-tools/initramfs.conf 中设置 KEYMAP=y,运行 sudo update-initramfs -u,然后重启以确认提示接受您的布局。

#colemak#dvorak#keyboard-layout#ergonomics#linux