mendge

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

rime 是一个输入法引擎,weasel 是其在win10平台的实现。weasel 提供了各种配置选项,用户可以在用户目录下通过配置 yaml 文件来组装功能,从而配置出适合自己的 schema(以下称为 方案)。weasel 自带了多种方案,在用户目录的build目录中。但是,如果想更改某种输入法方案,不能直接在其对应的*.schema.yaml上面修改。因为每次手动 deploy(部署)之后build目录下的这些文件会还原,就说帅不帅吧!解决这个问题,有两个办法:一是新建方案(需要熟悉了解方案配置,参考Rime 輸入方案設計書),二是用户配置覆盖原方案。

 

对于第二种方法,可在用户目录下创建Foo.custom.yaml(Foo是一个比喻,其对应一个已经存在的方案),那么就能通过修改该文件的 patch(补丁)字段来覆盖build目录下对应的Foo.schema.yaml的方案配置(既名字相同,就能通过映射关系来进行覆盖)。你可以将Foo.schema.yaml的所有配置原封不动地复制到Foo.custom.yaml的 patch 字段下(要注意修改缩进,另外,yaml 格式文本的缩进是两个空格),然后再在上面修改,达到局部修改的效果。

 

追加个人根词库需要先在用户目录下新建root.dict.yaml文件(名字可以不是 root,只是概念上像 root):

# *.dict.yaml 严格按照这个格式"---"开头,"..."结尾
---
name: your_name				# 可用和文件名中root相异
version: "2024.08.11"
sort: by_weight
use_preset_vocabulary: true
import_tables:
  # 这里再引入rime预配的词库
  - luna_pinyin
  # 以及自己自定义的词库
  - _info				# 个人信息(我的)
  - _sogo				# sogo账号导出的词库(我的)
  - _demo				# 自定义符号
...

 

然后自定义自己具体词库,我这里以_demo词库为例,在用户目录下新建_demo.dict.yaml如下:

---
name: symbol
version: "2024.08.11"
sort: by_weight		# 对于候选词排序,by_weight指根据权重来,original指根据你提供的顺序来 
use_preset_vocabulary: false		# 开启预选,你还没完整打出对应的拼音,对应词汇也会跳出来候选
...


# 每一行对应一个三元组(候选词,拼音,权重),中间要用tab区分开
α	alpha 			# 可不写权值

充分必要	c f b y	100	# 权值越大,候选的时候就排越前面(拼音内部是用空格分开的)

⇔	cfby	1		# "cfby",只会匹配候选 ⇔,像一个单词
⇔	c f b y	2		# "c f b y",像四个声母,既匹配 充分必要 又匹配 ⇔

注意,这里的文件命名的_demo.dict.yaml必须和根目录root.dict.yaml所引用的_demo一样(词库引用是按照文件名来的,引用出只要写 _demo 无需写 .dict.yaml)。还有就是,三元组必须要 tab 分开(就算从这里复制粘贴也可能不是 tab,有些编辑器的 tab 对应的是多个空格,也不是 tab,比如默认的 vscode),拼音中间的多个单拼只能用空格分开

 

最后,在Foo.custom.yaml中找到 patch/translator(yaml 文本中 patch 下的 translator 字段),把它下面 dictionary 对应的值改为创建的根目录名root(无需把 .dict.yaml 写上)即可(相当于把根词库挂载到 Foo 方案上)。重新部署小狼毫,仍然使用 Foo方案,就能使用新词库力。

posted on 2024-08-12 00:54  mendge01  阅读(459)  评论(0编辑  收藏  举报