-
Notifications
You must be signed in to change notification settings - Fork 10
使用 “u” 键引导全拼反查(以四叶草拼音为例)
因为键道的词库使用的是简体中文,所以全拼反查使用的拼音词库也需要是简体词库。小狼毫、鼠须管自带的明月拼音、地球拼音都是繁体中文,不适用键道的反查。这里用四叶草拼音为例,也可以使用雾凇拼音、袖珍简化字等方案。
小狼毫、鼠须管需要自行导入简体拼音方案,如果是仓输入法则自带四叶草拼音。
具体教程可参考 Rime 官方 wiki。简单来说,就是把修改的内容以补丁的形式放到 xkjd6.custom.yaml
文件里,而非直接修改 xkjd6.schema.yaml
。这样的好处是,键道官方更新了配置的时候,可以直接覆盖更新,无需手动检查和备份自己的配置。
在 Rime 的用户文件夹里新建或找到 xkjd6.custom.yaml
并编辑,加入以下内容:
patch:
schema/dependencies:
- clover
engine/translators/+:
- reverse_lookup_translator
recognizer/patterns/+:
reverse_lookup: "^u[a-z]*'?$"
reverse_lookup:
dictionary: clover
prefix: "u"
suffix: "'"
tips: "〔全拼〕"
preedit_format:
- xform/^u(.+)/$1/
- xform/([nl])v/$1ü/
- xform/([nl])ue/$1üe/
- xform/([jqxy])v/$1u/
comment_format:
- xform/^/〔/
- xform/$/〕/
- xform/ /, /
需要注意的是,如果你已经有这个文件,并且添加过内容,请确保添加的时候符合 yaml 的语法。
如果有不明白的,请首先参考补丁机制。
Rime 配置的补丁通常会把要修改的配置放到 patch
下面,其他所有的项都带有缩进。
schema/dependencies:
- clover
上面的配置是为键道配方加上四叶草作为依赖配方,其中 schema
是一级设定项,dependencies
是二级设定项,设定项后直接跟冒号表示替换掉整个这一级的配置。比如在这里就是替换了整个 dependencies
这个配置。不过键道官方是没有这个配置的,所以效果就是新增了这个配置。
这个 dependencies
配置是一个列表,列表的子项用减号和一个空格作引导,- clover
表示这个列表只有一项,也就是四叶草配方。
engine/translators/+:
- reverse_lookup_translator
上面两行配置是为键道配方新增了翻译器。同样地,engine
是一级设定项,translators
是二级设定项,设定项和冒号之间有斜线和加号(/+
)表示以下的配置和原有的设定项进行合并,可以是列表的合并,也可以是字典的合并。在这里是列表的合并,对于键道来说,合并后就变成了:
engine:
# 其他设定省略
translators:
- punct_translator
- table_translator@custom_phrase
- table_translator
- history_translator@repeat_history
- lua_translator@date_time_translator
- reverse_lookup_translator # 我们新增的翻译器
# 其他设定省略
这里的 reverse_lookup_translator
是 Rime 内置的一个特殊的翻译器,是专门用来反查的,这个服役器会读取 reverse_lookup
这个一级设定项的具体配置(见反查翻译器配置),其中包含了应该去查找的词典名。在打字的时候,这个翻译器只会对特定字段起作用,在这里这个特定字段是被打上 "reverse_lookup" 这个标签(tag)的字段。如果有这样的字段,翻译器会去查找设定中的词典,并根据配置修改对应候选的注释和预编辑文本。
recognizer/patterns/+:
reverse_lookup: "^u[a-z]*'?$"
识别器 recognizer
是一级设定项,是 Rime 内置的一个处理器(processor);模式 patterns
是二级设定项,描述了识别器应该识别哪些模式,并打上标签(tag)。这里同样使用了追加的写法,表示下面的内容和原有的 patterns
内容合并。
这个 patterns
是一个字典,reverse_lookup: "^u[a-z]*'?$"
是我们新增的字典项,字典用冒号分隔 key
和 value
。这里的 "^u[a-z]*'?$"
是一个正则表达式,简单来说就是以字母 "u" 开头的拼写,末尾可能有也可能没有单引号 "'"。
在打字的时候,recognizer
这个处理器会把符合模式 "^u[a-z]*'?$"
的字段打上 "reverse_lookup" 的标签。这样一来,前面提到的翻译器就会翻译这个字段。
最后就是比较复杂的反查翻译器的配置了。
reverse_lookup:
dictionary: clover
prefix: "u"
suffix: "'"
tips: "〔全拼〕"
preedit_format:
- xform/^u(.+)/$1/
- xform/([nl])v/$1ü/
- xform/([nl])ue/$1üe/
- xform/([jqxy])v/$1u/
comment_format:
- xform/^/〔/
- xform/$/〕/
- xform/ /, /
reverse_lookup
这个一级设定项是 Rime 内置的一个翻译器。dictionary: clover
指定了反查翻译器使用的词典,注意是词典名称,不一定是配方名称,可以在 build
文件夹下找到名为 xxx.table.bin
、xxx.prism.bin
这样的文件,其中 xxx
就是词典的名称。
prefix: "u"
表示使用字母 "u" 引导,在反查的时候,翻译器会忽略引导的字符再查找词典,例如输入字段为 "uzhuang",翻译器会用 "zhuang" 去查找拼音词典,而不是用 "uzhuang"。suffix: "'"
表示用单引号 "'" 结束,用来隔开反查字段和其他字段,在非语句流的配方中好像没什么用(如果有错误请修改这里)
tips: "〔全拼〕"
表示在反查的时候会在预编辑文本处显示 "〔全拼〕" 作为提示,可以修改为其他内容。
preedit_format:
- xform/^u(.+)/$1/
- xform/([nl])v/$1ü/
- xform/([nl])ue/$1üe/
- xform/([jqxy])v/$1u/
上面的几行表示修改预编辑文本,应用了以下规则
-
xform/^u(.+)/$1/
: 隐藏开头引导用的字母 "u" -
xform/([nl])v/$1ü/
拼音里的 "nv" 和 "lv" 显示为 "nü" 和 "lü" -
xform/([nl])ue/$1üe/
拼音里的 "nue" 和 "lue" 显示为 "nüe" 和 "lüe" -
xform/([jqxy])v/$1u/
拼音里的 "jv", "qv", "xv", "yv" 显示为 "ju", "qu", "xu", "yu"
最后是反查结果的提示:
comment_format:
- xform/^/〔/
- xform/$/〕/
- xform/ /, /
反查翻译器查找到词典里的词后,会在注释里加上本配方(键道)词典的拼写,如果有多个拼写就用空格隔开。理论上不加这几行就可以用了,这几行的作用就是在注释的开头加上左括号 "〔",结尾加上右括号 "〕",空格都改为逗号。
使用星空键道配方编写