-
-
Notifications
You must be signed in to change notification settings - Fork 376
rime 的独门绝技 菜鸟书评
chromezh edited this page Mar 15, 2018
·
3 revisions
还没有回复佛振大大的问题。 Rime的独门绝技主要有:
利用正则表达式,重新定义了一套简单的规则,很好的解决了码表变换的问题。 在利用现有码表,编辑生成新的输入法方案时,特别有效。
这个方案的优点是:
- 特别简洁有效,抓住了问题的核心,对输入的模型
- 实现起来性价比极高,可以转换为标准的正则表达式
- 扩展性良好,正则表达式的强大和功能完善无需质疑
- 可以为键盘的每个按键指定事件响应
- 主要用在标点符号的中英输出精确控制,程序员可以在中文状态下输出某些中文生僻字符的英文标点
- 按键选2,3候选码
- 可以自定义按键
- 我在trime里面用过,自定义一个按键,切换键盘
- 自定义一个键,用来输入日期+时间
建立的模型很好,利用了Unix一切都是字符流的思想,还有kiss原则。
从按键输入流,到最后输出汉字,主要用了四大组件集:
- processors:按键处理
- segmentors:字符分段
- translators:对字符编码转换为汉字
- filters:过滤输出
每件组件集里面,又有一些子组件依次对字符流进行过滤,跟Unix的管道很像。
不过这个我也理解不深,只是试着做一个隐喻:
古代有个由一家四口开的一个药店。
- processors: 父亲是柜台老板,负责与买药的人交流,记下客户的描述和要求;客户只是通过描述药物的信息来说明药物。有时候,还会描述错,又要叫老板把一些描述删掉。
- segmentors: 母亲在柜台旁边协助父亲,帮助整理父亲记下来的客户描述,客户描述得比较多,母亲的主要工作就是把这些描述进行分段,确定哪一段是一种药物。
- translators: 小妹根据母亲整理出来的条子,进行抓药。由于客户描述的药物符合条件的不止一种,小妹会把所有可能的药物都抓好,最后让客户进行挑选。
- filters: 大哥是负责最后对小妹抓出来的药进行一个重新打包(虽然现在都用塑料袋了,有些人还是喜欢古朴的纸包装,就是繁体字了),并且会过滤掉小妹抓重复的药。
大哥把最后的药交给父亲后,父亲又会继续与买药的客户交流,确定最后客户要拿哪个药。
这是一个循环的过程。
输入字符串也进行正则模糊化的功能。
现在,对码表可以利用正则表达式进行离线处理。 但是,对于输入的字符串也应该包含一个正则表达式的模糊输入的功能。
主要应用场合:
- 手机上的九宫格
- 五笔的Z键作万能键,可能用来代替所有的按键,用来查询编码