前言
我上一次使用 Windows 的体验还要追溯到十年前上学的时候,用的是联想 Y470-P,这个电脑有设计缺陷,在我一次关盖的时候,居然导致某个零件烧毁了,最后只好拿去换了个主板。
毕业后马上就买了 2015 款的 15‘ 的 Macbook Pro,之后几年间虽然换了电脑,但一直在苹果 生态,因此对 Windows 的使用体验,还停留在十年前:生态割裂、软件难用、设计丑陋(这一点至今也没变)、交互离谱。
618 刚攒了一台配置中高端的 PC,14700KF,5070Ti,英睿达 64G 的 6400 频率的内存和英睿达 2T 的硬盘,爱不释手:原来高配的 Windows 已经这么丝滑了,除了系统设计语言依然离谱之外,其他的诸如软件打开速度、好的软件的设计语言(比如 Win 版的 Apple Music),都很不错,当然最重要的,我买 Windows 是为了打游戏(80%原因)和写平台特有代码 C#(20%原因)。
高效输入的本质
因为我长时间(9年)在 Mac 上使用 HHKB,因此我倾向于将 Mac 的 HHKB 按键映射到 Win 上,我这么做除了习惯上的考虑,还有以下考虑:
-
将光标置为行首、行尾、向右删除等文本编辑常用的功能,在 Win 下必须按一个专用的按键才能实现,如行首是 Home,行尾是 End,向右删除是 Del 等,你无法做到使用修饰键 + 按键的组合方式来实现这个操作,但是 Mac 下系统级支持 Emacs 快捷键,因此行首 Control + A、行尾 Control + E、向右删除 Control + D 很轻松的实现。
-
上下左右移动光标也是同理,Win 下有专门的方向键来移动光标,而在 Mac 上可以使用 Control + B F N P 来实现。
你可能会有疑问,为什么我倾向于使用 Mac 上修饰键 + 快捷键的组合来完成按键,而不是使用 Win 下单独的按键来完成操作?
这个疑问的答案也是我特别喜欢 HHKB 的 60 配列的原因:我的双手手掌可以在不进行大幅度移动的前提下完成所有操作,进而保证输入效率。
在我们程序员界,能用键盘的时候绝对不能用鼠标,会被判刑!
举个例子,在 Win 下你正在高速输入内容,突然发现之前写的地方有个错别字,需要删除前面的几个字,此时你需要:
-
右手离开字母区域,食指摸索着放到右下角方向键位置(当然 87+ 键不用摸索,因为方向键的位置非常好找)
-
按下方向键,将光标移动到目标位置
-
右手离开方向键位置,移动到 Backspace 位置
-
按下删除键(Backspace 位置)
如果是在 Mac 的 HHKB 配列键盘,实现相同的操作你只需要左手单手操作即可:
-
左手小拇指按下 Control + B 将光标移动到目标位置
-
右手小拇指按下 Backspace 删除或者左手小拇指按下 Contron + H/D(向左/向右删除)
就是这么简单,你的双手不需要移开字母区域。
甚至,在修改完成后,Win 需要右手再次离开字母区域按 End 回到最新的光标位置,而 Mac 只需要左手 Control + E 即可完成。
艰难的反引号 ` 输入
我喜欢 HHKB 的另一点是,我是个前端开发,因此需要较为频繁的使用反引号(就是波浪线的那个按键),一般的 60 左右键位的键盘,这个键是放到 ESC 上,使用快捷键组合按下。但 HHKB 是将这个键独立出来放到右上角,然后将删除键下移,|
按键上移实现的(即正常的 Backspace 被分成了两个 1u 的按键)。
艰难的 Control 输入
一般配列的键盘还有一点设计影响输入效率的设计是,Control 在左下角,因此当你按下 Control + 按键的时候,你的手腕一定会向左弯曲,手掌右移,而任何让手掌移动的输入方式,是不优雅的,进而影响效率。
不过网上有人尝试有小拇指的下方的那个手掌位置来按左下角的 Ctrl,离谱:
我甚至极端觉得,任何通过张开和合上嘴巴来发音的语言是不优雅的,优雅的语言发音应该不需要嘴巴大幅的上下张合,只需要舌头和喉咙配合就应该能清楚发音,因此我觉得日语是最优雅的语言——这也导致了日语语言表现力不强,尤其是表达强烈情绪的脏话方面。
多余的 CapLock 按键
我觉得的应该很少有人会长时间经常性的输入大写字母,因此普通配列的键盘将大写锁定键 CapLock 放到左手小拇指这个如此重要的位置简直离谱。
综上,我觉得 HHKB 的配列是最完美的,不只是他的对称美,更是它在输入方面的效率。而在 Mac 上的快捷键,起码对于文本的操作效率,是优于 Win 的。
因此,接下来我会分享一下我如何将 Mac 下的按键复刻到 Win 上,以实现使用手部的一套肌肉记忆在两个操作系统下高效编辑的效果。
至于最让人诟病的 HHKB 的方向键,基本上你能用方向键移动光标的地方,都可以使用 Emacs 快捷键,除了……部分的终端,比如 Python,Control-D 是退出 CLI;以及 Remote SSH 时候的 Linux 主机,这确实有点尴尬,不过使用一个好的终端可以些许避免麻烦,这里可以考虑 Warp,它可以以文本编辑的方式来输入命令,也就是说你可以使用 Emacs 快捷键输入命令,这么说你可能不太理解,试试就知道它跟普通终端的区别了。
键盘要求
你需要一把支持多层按键映射的键盘,即按下 FN + 其他按键的组合键,宏的支持可有可无。有些键盘支持多达 6 层的映射(算上双系统切换每个系统 3 层),我使用的是我新买的 Nuphy Air75 V3 键盘,之所以使用它而不是 HHKB,还是因为一方面我要在 Win 上打游戏,因此 F 区(F1~F12)是必不可少的,因此 75 键是我能接受的键位极限。
谁漏了炮车我一个问号就发过去了 —— Faker
FN 键映射实现 Ecmacs 文本编辑
有如下文本编辑需要实现(下列描述格式是 Win 下按键 -> Mac 下快捷键):
-
光标移动到行首:Home -> Control + A
-
光标移动到行尾:End -> Control + E
-
光标向下移动:↓ -> Control + N(Next)
-
光标向上移动:↑ -> Control + P(Previous)
-
光标向左移动:← -> Control + B(Back)
-
光标向右移动:→ -> Control + F(Front)
-
向右删除:Del -> Control + D(Delete)
-
向左删除:Backspace -> Control + H(H 表示删除没有对应的单词是因为历史原因,感兴趣的可以自己去搜)
我其实更倾向于在 Mac 下的复制粘贴使用的是 Control+ C/V 而不是 Cmd + C/V 的设计(但是我没有映射),也许是历史原因在 Ecmacs 上不支持复制粘贴,而且也不是文本编辑特有的快捷键的原因,Mac 将复制粘贴的快捷修饰键设置为了 CMD。
因此,在 Win 上实现 Mac 下 HHKB 相同的按键需要将 Caplock 改为 FN 层(我改为 FN6 了),然后逐个按键映射即可:
然后在 FN6 层设置各个按键的映射为单独 Win 下各个功能的按键即可:
字母区按键修改
HHKB 下,回车键的上方是删除键 Backspace
,而不是 |
键,因此我一开始是直接将 Backspace 跟 | 键对换,但是由于一些神奇的原因,我的手自适应了 75 按键,因此删除键总是按到上方的 | 键,切换到 HHKB 后又要强制按下面一排,很难受,于是我索性将二者都改成 BackSpace,然后将极不常用的 | 键放到 F 区的 F13 的位置。
之后,我先交换了 Control 和 Alt 的位置,这样的目的是可以将 Mac 下的一些操作如 CMD + C/V/T/W 的操作,跟 Win 下相同功能的 Control + C/V/T/W 等手指的肌肉动作一致。
最后,我将 Win 键跟 Alt 互换(即将 Win 键放到键盘的左下角),来实现 Win 和 Mac 上的 Alt(Opt)相同位置的目的。
现在,你按下空格键的左侧按键(Win 下是 Ctrl,Mac 下是 CMD)后,再按其他按键效果完全相同,如 Ctrl/Cmd + C 复制,Ctrl/Cmd + V 粘贴,Ctrl/Cmd + T 打开新标签,Ctrl/Cmd + Shift + T 恢复关闭的标签等。
其他按键修改
既然已经有了 Home 和 End 快捷键,因此键盘最右侧的 Home 和 End 就是没必要的,所以我做了两个操作,将 Home 改为一个常用的快捷键,我改的是 Win + V,这个快捷键在 Win 上会打开粘贴板记录,而在 Mac 下我映射为了 Cmd + Opt + C,也是打开 Alfred 的粘贴板历史窗口。
Home 键映射 M1 的宏,打开复制历史,End 键改为 WinLock 防止手记忆返祖按到左下角的 Win 键,现在和打游戏的时候锁定 Win 键,等习惯了再打开。
美中不足
在 Win 下,Alt + Tab 是无法映射的,而这个键的关键作用是切换不同的应用程序窗口,按照上述设置后,按键是在空格左侧第二个键 + Tab 键。
但是相同的功能,也即在 Mac 下切换不同应用程序使用的是 Cmd + Tab。
因此,我的设置除了应用程序切换的按键在两个系统都是系统级别的无法映射外,其他的按键都是可以使用同一个肌肉记忆按下,无需去区分 Win 快捷键的位置和 Mac 快捷键位置的差异。
后记
适合自己的才是最好的,你也没必要跟我争论说哪种按键方式更好,习惯的力量是强大的,只要习惯了,效率就是最高的。
最后祝大家 Happy Hacking!