Skip to content

rime 的独门绝技 菜鸟书评

chromezh edited this page Mar 15, 2018 · 3 revisions

Rime的独门绝技

还没有回复佛振大大的问题。 Rime的独门绝技主要有:

拼写运算

利用正则表达式,重新定义了一套简单的规则,很好的解决了码表变换的问题。 在利用现有码表,编辑生成新的输入法方案时,特别有效。

这个方案的优点是:

  1. 特别简洁有效,抓住了问题的核心,对输入的模型
  2. 实现起来性价比极高,可以转换为标准的正则表达式
  3. 扩展性良好,正则表达式的强大和功能完善无需质疑

按键响应的自定义

  1. 可以为键盘的每个按键指定事件响应
    • 主要用在标点符号的中英输出精确控制,程序员可以在中文状态下输出某些中文生僻字符的英文标点
    • 按键选2,3候选码
  2. 可以自定义按键
    • 我在trime里面用过,自定义一个按键,切换键盘
    • 自定义一个键,用来输入日期+时间

对输入处理流程的建模

建立的模型很好,利用了Unix一切都是字符流的思想,还有kiss原则。

从按键输入流,到最后输出汉字,主要用了四大组件集:

  • processors:按键处理
  • segmentors:字符分段
  • translators:对字符编码转换为汉字
  • filters:过滤输出

每件组件集里面,又有一些子组件依次对字符流进行过滤,跟Unix的管道很像。

不过这个我也理解不深,只是试着做一个隐喻:

古代有个由一家四口开的一个药店。

  • processors: 父亲是柜台老板,负责与买药的人交流,记下客户的描述和要求;客户只是通过描述药物的信息来说明药物。有时候,还会描述错,又要叫老板把一些描述删掉。
  • segmentors: 母亲在柜台旁边协助父亲,帮助整理父亲记下来的客户描述,客户描述得比较多,母亲的主要工作就是把这些描述进行分段,确定哪一段是一种药物。
  • translators: 小妹根据母亲整理出来的条子,进行抓药。由于客户描述的药物符合条件的不止一种,小妹会把所有可能的药物都抓好,最后让客户进行挑选。
  • filters: 大哥是负责最后对小妹抓出来的药进行一个重新打包(虽然现在都用塑料袋了,有些人还是喜欢古朴的纸包装,就是繁体字了),并且会过滤掉小妹抓重复的药。

大哥把最后的药交给父亲后,父亲又会继续与买药的客户交流,确定最后客户要拿哪个药。

这是一个循环的过程。

还缺少一个很重要的功能

输入字符串也进行正则模糊化的功能。

现在,对码表可以利用正则表达式进行离线处理。 但是,对于输入的字符串也应该包含一个正则表达式的模糊输入的功能。

主要应用场合:

  • 手机上的九宫格
  • 五笔的Z键作万能键,可能用来代替所有的按键,用来查询编码