article_image

关于 Markdown 输入的讨论从未断绝,但是大多停留在“能够输入”的层面上,多数软件所谓的 Markdown 符号输入支持,也只是给了一堆快捷键(如 Drafts)或一排按钮(如 Ulysses),鲜有听闻谁能让 Markdown 符号输入更舒服的。而恰恰在这一貌似极其个人化而无从置喙的领域,最能看出设计师的功力——当然,也包括自动化动作的设计者。

软件开发商追求四平八稳,不敢深入太个性化的输入方式,这无可厚非。但是在按钮和快捷键之外,尚有更加自然的输入方式可供探索。这类操作并非“我就是这样觉得”或“我就喜欢”,而是在心手并用的键盘起落之间,既确确实实减少操作量,又明明白白降低记忆量

本文将借 Keyboard Maestro 此利器,试投代码符号与强调符号之粗砾,以引诸位读者之明珠。

>>Keyboard Maestro 动作下载<<

代码符号

Markdown 符号输入之压力,主要在于中英与符号切换。Markdown 终归是舶来品,其所用符号皆出自洋文,若在中文环境下频频输入,则需时时切至英文输入法或当前输入法的英文模式。虽也有编辑器可以渲染中文环境中的符号,但毕竟不通用,迨转发或投稿,则问题毕现。例言之,仅仅是输入代码符号(即键盘左上角的重音符号,Grave Accent),反复翻转手腕,简直如绣花般复杂:

  1. 切到英文输入法(英文模式),输入第一个重音符号;
  2. 切回中文输入法(中文模式),正常打字;
  3. 切到英文输入法(英文模式),输入第二个重音符号。

熟练者固然洋洋自得,如同掌握了某种复杂的钢琴演奏技巧,施展起来竟也有平仄或起承,但转念一想,这些操作或许并不必要。就这类成对符号而言,早已有人用 AppleScript 整组插入,而不少代码编辑器也会主动检测并自动补全,并把光标移至符号中央,方便继续输入。这类代码碎片流传于各个 Power Users 社区,连著作权都已不可考(我也写过几篇用 Keyboard Maestro 插入成对符号的文章,较近的在UNTAG 的付费栏目第二十二期)。

——但是,你仍然需要记忆一组快捷键。且不论快捷键本何其寸土寸金,在手指纷飞之际,快捷键其实也并非上选。Keyboard Maestro 提供了在快捷键和图形化按钮之外的第三种选择:检测打字规律,并根据刚刚输入的文本触发自动化动作。换言之,你可以:

  1. 轻轻按动两次重音符号,再像日常打字一样按空格键上屏,旋即插入一组重音符号,表示这里是一段行内代码(code area),而光标也将自动移至中间。
  2. 连续按动三次重音符号,则插入一个代码框(code block),同样,光标将置于中间行。
Alt text
用 Keyboard Maestro 插入 code area 和 code block
注:因借用 Keyboard Maestro 模拟了键鼠操作,部分操作也被记录按键的软件录下来,实际上并未按下。下文的演示部分与此情况相同,不再复述。

插入 code area 或 code block 的部分不值得多言,关键在于触发方式(Trigger)。检测输入两次重音符号并不难,难的是我们可能用到 code area 与 code block 两种呈现代码的形式,如何只用一颗重音符号键兼顾两者?如何避免双击和三级产生冲突?这就涉及了 Keyboard Maestro Typed String Trigger 中的正则模式匹配(regular expression match)。模式匹配设计的妙处在于,你不仅可以检测连按两次重音符号,还可以检测连按两次之后紧跟着按下非重音符号,如此一来,就确确实实区分了双击和三级,不会在按动三次重音符号键时发生冲突。

Alt text
Keyboard Maestro 步骤:插入 code area
Alt text
Keyboard Maestro 步骤:插入 code block

之所以从代码符号入手,只因其输入方案几乎最难设计,毕竟有两种表示形式,如何不增加记忆量而简化手指动作,需要一些巧思。

顺予指出,Keyboard Maestro 中还有 USB Device Key Trigger,同样可以检测某颗按键是否被按下,但在检测连续按动时可能有一秒的卡顿,并不舒服,故弃之。当然,这里也有美学考量,我是在无法放弃 符号符号[^符号] 这种特殊的字符模式。

强调符号

一旦解决了代码符号的输入问题,诸如斜体符号(文字两侧各一个 *)、强调符号(文字两侧各两个 *)和删除符号(文字两侧各一个 ~)则势如破竹。考虑到斜体符号和强调符号也兼用星号,不妨沿用代码符号的输入方案,让一颗键管两组符号——但是,中文语境下不存在斜体一说,正规做法是换字体,恕我不往这一方向制作自动化动作,仅展示正常输入强调符号的效果与 Keyboard Maestro 步骤。

Alt text
用 Keyboard Maestro 插入强调符号
Alt text
Keyboard Maestro 步骤:插入强调符号

此番不再必需一颗按键管两组符号,若只考虑动作本身,则只需检测两次星号,不必以非星号堵漏。但是,异于输入代码符号,强调符号也常常在校订审阅时随后插入,此时就有必要多设计一套动作,用于在当前选定的文本两侧增加强调符号,若愿意深挖,则“非模式”仍需保留,而增加星号的交互方式则效仿插入 code block,选择三击。

Alt text
用 Keyboard Maestro 增加强调符号

在选定文本周围增加星号,非 Keyboard Maestro 莫属,盖其中有大量键鼠模拟,细述如下:(1)首先选定文本,接着连续按动三次星号,其间选定的文本会被覆盖;(2)无妨,触发本动作后,Keyboard Maestro 会模拟一次撤销操作,恢复方才随着输入星号被覆盖的文本;(3)接着,正常复制文本,并在其两段增加强调符号后贴上,同时覆盖原文本。

Alt text
Keyboard Maestro 步骤:增加强调符号

小结

正如 Markdown 亦来自民间,Markdown 符号的种种输入方式,也贵在自下而上的一线经验。仅 UNTAG 一隅,也有不少讨论,我在《用 Keyboard Maestro 把任何软件变成 Markdown 编辑器》等文章中已有所涉猎,Apus 也以《在几乎任何Markdown编辑器中快捷粘贴图片》一探图片插入。

以上种种貌似吹毛求疵的输入方式设计,无非探求输入方式的极限,同时也是检测自动化工具的边界。快捷键和现成按钮固然不需要脑筋转弯,看一眼就能学会,却不见得是最好的交互方式。而在单颗本就无法避开的按键上挖空心思,倒也不无所得。

操作电脑一日演奏乐器——键盘本就多多少少承袭了钢琴的结构——演奏单个音符似乎都不难,但想要串联成曲却总觉磕磕绊绊,重要原因之一便是乐手没有找到更易于演奏的替代音,若能抓住,则曲子将更为优雅流畅。

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

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

author_avatar

Lawyer, macOS/iOS Automation Amateur