article_image

任何需要瞄准的操作都难以形成肌肉记忆,因此,鼠标、触控板和方向键均被 macOS Power Users 视作低效的交互手段——这大概才是全键盘党产生的根本原因。就移动光标和选取文本二事,当有人偶然发现 Unix 时代的快捷键遗产时,也会引发一阵欢呼。

诚然,经常写稿或编辑代码的人,一定会对这些效果简洁明快的快捷键爱不释手,纵横捭阖于字句行段之间,一个快捷键就能跳到段末或者选中整段文本而不需要移动光标,复制、剪切、粘贴、移动、删除文本如摆弄剪报一般直观。

效果虽好,但很可能,你也——和我一样——无法接受 ⇧Shift-⌃Control-A 这种需要把手指拧成天津麻花的键位。或许快捷键遗产需要以另一种方式继承,将其融入现有习惯,而不是为了标榜全键盘而削足适履——这就好像为了坚持情怀和血统而拒斥最方便的电子乐器或新式调音,非要用上古时代的十孔口琴演奏现代日漫片尾曲一样。1

最常见的移动和选取并不需要另行改动,本文基于 Keyboard Maestro,旨在改良移动光标至段首段末选取文本至段首段末两套操作,令其融入最常用的方向键,并且不影响日常操作。

>>示例 Keyboard Maestro Macro 下载<<

不过,但凡有一位读者对方向键的合法性提出疑问,恐怕故事就要从全键盘党说起。

从全键盘党谈起

操作和任务之间的区别在应用程序设计中很重要,因为目标是为任务性能优化用户界面,而不是为单个操作进行次级优化。——Jakob Nielsen

全键盘党是一个奇怪的历史现象。为避免误伤,让我们先定义一下“全键盘党”:一批主张或至少幻想不用鼠标和触控板,只使用键盘控制电脑的家伙;而其中的激进派,则连键盘四周的按键也瞧不上,包括但不限于通常位于键盘右下位置的方向键。一般的理由是,键鼠切换或其他大范围移动手指乃至手掌的行为,大大降低了操作效率。对此稍后再作评价。

一般而言,“某某主义”“某某派”这类称呼常常是对立方替被攻击的一方贴上的标签2,尽管被针对的一方若是足够强悍,则原本的戏称甚至蔑称反倒有可能成为勋章。“印象派”(Impressionnisme)即为适例,原本这是评论家和记者对一批新锐画家的蔑称,不料终成芳名。

但“全键盘党”却是一批人的自我称谓。网络上基本只见自诩的“全键盘党”,全不见理应十恶不赦的敌人——“全鼠标党”或“键鼠混合党”,真正在谈论全键盘操作的,要么是 ShortcatMacVim这类主打全键盘的软件,要么就是一些号称继承了全键盘往圣绝学的可疑分子。这不得不让我大胆猜测,或许鼠标和键盘上下左右四角的按键只是这些家伙竖立起来的稻草人,在这个意义上,全键盘党更像是仅仅存在于人们想象中的玫瑰十字会3,实际上可能不存在纯正的全键盘党员,多数当事人只是一厢情愿相信自己属于某个光荣传统的一部分。

诸如移动光标和选取文件这样的细节,也足以折射出全键盘的意识形态:“低效率”的做法是将你的右手撤离4键盘主阵地5,左右开弓按下修饰键和方向键后,再将右手挪回键盘主区域;而更正统的做法,则是用快捷键 ⌃Control-A⌃Control-E 移动光标到段首或段末,或者用 ⇧Shift-⌃Control-A⇧Shift-⌃Control-E 一路选取文本到段落开头或末尾。

你如果在电脑前,现在就单手按下 ⇧Shift-⌃Control-E 试试。你马上会知道,全键盘党、尤其是连方向键也敌视的激进派,他们嘴里到底有几句靠谱话。

至此,我已经从历史和直接经验两方面驳斥了全键盘党——如果这玩意儿真的存在的话。现在,我将回到 Jakob Nielsen 的断言:优化(整个)任务,而不是优化(单个)操作。身为网页交互设计的教父6,Nielsen 敏锐地发现,许多优化只是针对单个操作,相应的统计也过于线性,搞得好像一个人除了移动光标以外整天什么都不做似的。对应的优化,大概也只对硬件和软件起作用,而对人——这个湿件(wetware)——则效果不明显。

说了这么多,或许也不过是在射击我自己竖立的稻草人吧,毕竟在上述讨论中,一大假设就是全键盘党并不存在。

Keyboard Maestro 的实现

现在,重新整理一下需要改良的键位:

  • 移动光标到段首:⌃Control-A
  • 移动光标到段末:⌃Control-E
  • 复制文本到段首:⇧Shift-⌃Control-A
  • 复制文本到段末:⇧Shift-⌃Control-E

事实上,有另一套与之相似的操作,基于方向键,更符合直觉:

  • 移动光标到行首:⌘Command-左箭头
  • 移动光标到行末:⌘Command-右箭头
  • 复制文本到行首:⇧Shift-⌘Command-左箭头
  • 复制文本到行末:⇧Shift-⌘Command-右箭头

一个不拘泥于古老操作方式的人,恐怕已经看出其中的相似性;如果懂得基础的 Keyboard Maestro Macro 制作方式,可能已经着手设计替代键位了。但本文的做法是利用 Keyboard Maestro 的 USB Device Key Trigger,直接将目标操作映射到现有的光标移动与文本选取操作上,无需记忆任何新键位。详言之,本文旨在保留第二组键位的同时,双击任意一项,均可触发第一组键位中的对应项。

快速移动光标

有基础文本编辑经验的人,大概都知道 ⌘Command-右键头 可将光标移动到行末,但移动到段末却要记忆一个诡异的键位 ⌃Control-E。这种需要劳驾小拇指颤巍巍出马的键位,恐怕也不符合任何一位玫瑰全键盘党自称的价值观。

我的设计是:按一次 ⌘Command-右键头,仍然将光标移动到行末;如果按动两次 ⌘Command-右键头,则将光标移动到段落末尾。如此一来,便不需要记忆新的快捷键,可以保留既有习惯;而同一键位上的两种操作,仿佛是摩托车上的各个速度档位,越用力移动范围就越大。

某种程度上,新设计其实是利用了原本无用的键位:当光标已经移动到行末时,继续按 ⌘Command-右键头 本来不会发生任何事情,但我令其得以换档,继续向下移动。7或者说,新设计将惯性带入了赛博世界,让仍然身处物理世界中的使用者宾至如归。

Alt text
快速移动光标到段首段末

之所以选定 USB Device Key Trigger,是为了避免影响原先的 ⌘Command-右键头 操作。如果将双击快捷键(Hot key)作为触发方式,则单击快捷键将会被覆盖,系拆东墙补西墙,故弃之;而 USB Device Key Trigger 本质上比快捷键更加底层,只要检测到某颗按键被按下,即可执行对应操作,且不影响原有的快捷键。关键的衔接点在于,USB Device Key Trigger 也可以检测 复数个修饰键+单颗按键 的组合,这实际上包括了大部分快捷键,使用起来也感觉像在用快捷键。

Alt text
快速移动光标的步骤

特予指出,USB Device Key Trigger 并不限于 USB 设备,笔记本电脑自带键盘也可以作为触发方式。弊端在于,每次添加一块新的外接键盘时,需要添加对应的 Trigger。

快速选取文本

理解光标移动的键位设计后,重新布局选取文本的键位也是顺水推舟。新设计中,按一次 ⇧Shift-⌘Command-右箭头,依旧选取文本到行末;如果按动两次 ⇧Shift-⌘Command-右箭头,则从当前位置开始,一直选择文本至段落末尾。向前选择文本的操作与之同构。8

Alt text
快速选择整段文本的步骤

步骤如下,实际执行的操作只是模拟现有快捷键,而核心仍然在于 Trigger 的设计上。

Alt text
快速选择文本到段首段末

我在示例动作中还配备了直接选取整段文本的 Macro,在不影响单击或双击 ⇧Shift-⌘Command-左或右箭头 的前提下,连按三次 ⇧Shift-⌘Command-右箭头⇧Shift-⌘Command-左箭头,皆可选中当前的全段文字。

Alt text
快速选中整段文本

注释7设想了更多的光标移动和文本选取档位,不过暂时看起来已经走到了玩物丧志的边缘,且允许我就此打住。

🛍 我撰写的付费栏目《Keyboard Maestro 进阶指引》正在 UNTAG 售卖,详解 Keyboard Maestro Macro 高级设计思路,欢迎选购:付费内容链接

Keyboard Maestro 进阶指引
Keyboard Maestro 进阶指引

  1. 传统调音的口琴,尤其是布鲁斯口琴,根本没有低音 Fa 和 La,几乎不可能演奏有大量低音区旋律的当代流行歌曲和日本动漫配乐。由于某些商业和历史原因,全世界只有中国大陆有人苦练别扭的压音或干脆买好几把口琴以补全音阶。
  2. 这是自古以来被屡次证明极其有效的污名化策略。例如,启蒙运动时期将所有被拒斥的知识基本都扫入“神秘学”这个大号垃圾堆,并将其贴上邪恶魔法的标签。
  3. 玫瑰十字会是古人虚构的一个组织,但是一堆人愿意相信其存在,甚至认为自己通过各种途径与之产生联系。Eco 的多本作品讽刺了这类人,而丹布朗却当作确有其事,这也难怪 Eco 连和丹布朗一较高下的兴趣都没有,当记者问他如何看待丹布朗热时,Eco 只甩下一句:他不过是我笔下的小人物。
  4. 请注意这个满是春秋笔法的用词。
  5. 请再次注意此处的春秋笔法的用词。
  6. 例如那些令人上瘾刷个不停的购物推荐设计,基本都可以追溯到 Jakob Nielsen。
  7. 还有更加全面的设计:进一步按下 ⌘Command-右键头,可以继续往下逐段移动光标(选取文本同理),就好像设置了更高速度的档位。但我不满意目前的 Keyboard Maestro 实现,或许日后有足够美观的设计时再发文。
  8. 另有一种选取文本的方法:先选中当前的一行文字,再按快捷键 ⇧Shift-下箭头 向下逐行选取文字。但这种做法在行末时会选中换行符,且需要多次点按,管见以为并不值得推崇。

author_avatar

Lawyer, macOS/iOS Automation Amateur