Rime demo

我的 Rime 配置说明及新手指引。

雾凇拼音,功能齐全,词库体验良好,长期更新修订,仓库:iDvel/rime-ice

使用说明

备份后删除配置目录下原有的配置文件,再将仓库所有文件复制粘贴进去就好了。

方案选单呼出快捷键是:Ctrl + Shift + `,可在 default.custom.yaml 中设置。

基本套路


使用简体字表和词库,适合简体用户,出词不经过 opencc 转换。

melt_eng 作为次翻译器以支持英文输入,支持响应大写字母。

两分输入方案作为反查,拼字功能,默认设置是以 u 开头。

词库文件都放入了文件夹里,让主目录清爽一些。

没有以 patch 的形式写方案配置,这样配置文件看起来很舒服。

长期维护词库

基本所有时间都花在词库上了,精心调教了很多。既然找不到一份比较满意的简体词库,主流输入法又不公开自己的系统词库,干脆自己搞一个。

主要维护的词库:

  • 8105 字表。
  • base 基础词库。
  • sogou 搜狗流行词。
  • ext 扩展词库,小词库。
  • tencent 扩展词库,大词库。

维护内容主要是异形词、错别字的校对,错误注音的修正,缺失的常用词汇的增添,词频的调整。

欢迎在词库方面提 issue,我会及时更新修正。

词库的一些准则:

单字

单字只在字表中存在,方便检查排序。

字表遵循 Rime 的权重设计,让常用多音字之间的权重比例满足至少 5:100,否则无注音的词汇无法被注音;生僻的多音字不参与自动注音,放到 base 中手动注音。

当含有多音字的词组缺少编码字段时,自动注音程序会利用权重百分比高于 5% 的读音进行组合、生成全部可能的注音。—— Rime 输入方案设计书

多音字注音的问题,例如 ext 词库中未注音的「十三朝古都」,用 ……chao……du 或 ……zhao……dou 都可以打出来,不过会出现意料之外的候选项的概率比较小。

一些可能产生困扰的,如「会计kuai ji」和「hui ji」冲突很多,如「奇迹qi ji」用「ji ji」也能打出来。

这样含有不太适合被自动注音的多音字的词汇,放到 base 中手动注音。

两字词

两字词只在 base 中有,并删除、注释或降权了很多人名、地名(市县乡镇村路街小区)、企业名、品牌名。

因为两字词的排序基本决定了词库舒适度,重码较多,所以统一放到 base 中并加上注音与权重,也方便修订。

只保留了野风词库和几大词典的两字词,扩展词库的都没有自动加入,平时扩充时都是肉眼检查后才添加。

扩展词库

扩展词库默认权重为 100,因为不写权重时,Rime 默认给到的权重比 1 还小,输入长句时,初始的候选项会被两字词及单字挤占。

比如想输入「抽根烟 / 再看看」,当「抽根烟」这个词没有权重时,默认候选项是「抽根 / 淹在 / 看看」。

新手指引

一些教程:

还有很多,已经很全面了,配置中都写了注释,下面的只是结合本配置随便写一点。

目录

  • 配置目录:

    • 鼠须管: ~/Library/Rime

    • 小狼毫: %APPDATA%\Rime

  • 共享目录:

    • 鼠须管: /Library/Input Methods/Squirrel.app/Contents/SharedSupport
    • 小狼毫: <安装目录>\data

共享目录提供了很多默认的配置项,比如配置目录的 default.custom.yaml 其实就是在给共享目录的 default.yaml 文件打补丁。简繁转换的配置也可以直接书写 s2t.json,因为共享目录里已经有相关文件了。

各文件说明

.
├── default.custom.yaml   # 全局设置
├── squirrel.custom.yaml  # 鼠须管的皮肤设置
├── weasel.custom.yaml    # 小狼毫的皮肤设置

├── rime_ice.schema.yaml  # 拼音方案
├── rime_ice.dict.yaml    # 挂载词库
├── cn_dicts/             # 词库目录
├── symbols_custom.yaml   # 自定义的 symbols,单独拆分出来了

├── melt_eng.schema.yaml  # 英文方案,作为次翻译器挂载到拼音方案
├── melt_eng.dict.yaml    # 挂载词库
├── en_dicts/             # 词库目录

├── liangfen.dict.yaml    # 两分方案,作为反查挂载到拼音方案
├── liangfen.schema.yaml  # 两分词库

├── custom_phrase.txt         # 自定义短语/固顶字
├── opencc/                   # 词语映射,Emoji
├── rime.lua                  # lua 脚本
└── zh-hans-t-essay-bgw.gram  # 八股文

以 patch 的方式打补丁

文件以 patch: 开头,注意缩进,可以继承、覆盖、向后追加、向前追加等等。

上面提到的,配置目录的 default.custom.yaml 其实就是在给共享目录的 default.yaml 文件打补丁。

squirrel.custom.yamlweasel.custom.yaml 是同样的。

包括配置的 xxx.custom.yaml 是在给 xxx.schema.yaml 打补丁。

官方 wiki:定製指南

比如电脑手机可以共用一个 xxx.schema.yaml,手机上有一些特定的设置,比如开启智能纠错(电脑上开这个有点难受,手机上全键盘全拼不开更难受)。

就可以创建一个 xxx.custom.yaml 配置好了扔到手机上,不用同时弄两份配置。

patch:
  translator/enable_correction: true

Tab 与空格

Rime 的 YAML 配置文件需要严格的缩进,只能用空格,不能用 Tab。

但是词条之间是用 Tab 分割的:

拼音	pin yin 1234
拼音<Tab>pin<Space>yin<Tab>1234

emoji.txt 中是用 Tab 和空格分割的:

笑哭	笑哭 😂 🤣
输入内容<Tab>响应内容1<Space>响应内容2<Space>响应内容3

经常编辑词库的话,可以设置为默认 Tab 缩进,在 .vscode/setting.json 中写入,参考 VSCode #69011

{
	// Configure editor settings to be overridden for [yaml] language.
	"[yaml]": {
		"editor.insertSpaces": false,
		"editor.tabSize": 4,
		"editor.detectIndentation": false,
	},
}

编写词库

import_tables: 下的多个词库,在多个文件有重复的情况下,只记录最先出现的词汇的权重,所以建议把含有权重的词库放到最上面。

我已经对拼音词库做了去重,但是英文词库没有去重,英文词库只有 en_ext 有权重,所以它应该排在第一位。

拼音词库 *.dict.yaml 文件中,单编码的缩写会导致超级简拼失效,比如

世界	s j

这样的词汇会导致 sj 无法响应超级简拼,这种非常规的注音建议放到 custom_phrase.txt 中编写。

词库默认的列是:

---
name: 词库名
version: "版本号"
sort: by_weight(按权重排序) 或 original(按码表顺序排序)
columns:
  - text    # 词汇
  - code    # 编码
  - weight  # 权重
  - stem    # 造词码(不知道是啥,好像和拼音没有关系)
...
你好	ni hao	123

对于没有注音,又想设置权重的词库文件,修改列即可:

columns:
  - text    # 词汇
  - weight  # 权重

自定义文本

custom_phrase.txt 文件内的字词会占据最高权重,即排在候选项的最前面。

但不与其他翻译器互相造词,如果使用了完整编码,那么这个字或词将无法参与造词,即自造词无法被记住。

所以建议只固定非完整编码的字词,「的de」应为「的d」,「是shi」应为「是s」,「仙剑xianjian」应为「仙剑xj」。

同步

installation.yaml 文件在第一次部署后会自动生成,在这里可以编辑当前设备的 ID 和同步目录,如:

installation_id: "MBP-001"  # 本机的 ID 标志,生成的文件夹是这个名字
sync_dir: "/path/RimeSync"  # 同步的路径

点击「同步用户数据」后,会在同步目录(/path/RimeSync/MBP-001)下生成用户词典 *.userdb.txt,这个就是用户词典了,里面都是输入过的内容。

同步时会和配置目录下的 *.userdb/ 进行双向更新同步。

这个同步功能还会额外单向备份配置目录下的 YAML 和 TXT 文件,但是只有根目录的。

主要的设置

default.custom.yaml 中可以配置以下选项:

  • 方案列表
  • 候选词个数
  • CapsLock 或 Shift 切换中英
  • 呼出方案快捷键,默认只启用了 Control+Shift+grave(`
  • recognizer/patterns,放到 rime_ice.schema.yaml 中统一管理了
  • 快捷键

*.schema.yaml 中是方案配置。

rime_ice_schema.yaml 是最主要的配置文件,大部分功能都在此引用或实现。

可以直接修改方案文件,也可以新建 rime_ice.custom.yaml 以 patch 的方式给原配置打补丁。

开关记忆

方案中有几个开关(switches),比如简繁开关、Emoji 开关、中英标点开关。。。

如果设定了 reset,切换输入法或切换程序后就会重置。

如果想让输入法永远记住,需要取消设置 reset,并在 default.custom.yaml 中写入 save_options

如何删除相关功能

比如删除英文输入,所有的相关配置是这些:

# dependencies 下的:
- melt_eng

# engine/translators 下的:
- [email protected]_eng

melt_eng:
  dictionary: melt_eng
  enable_completion: true
  enable_sentence: false
  enable_user_dict: false
  initial_quality: 1.1

两分拼字方案同样,删除 dependenciesengineliangfen: 这些部分的代码就可以了。

还有一些 lua 的功能,比如以词定字或长词优先,在 engine 下注释掉就好了。

皮肤

squirrel.custom.yamlweasel.custom.yaml 中配置鼠须管或小狼毫的皮肤。

这里有一个鼠须管内置皮肤的展示图:NavisLab/rime-pifu图片备份

小狼毫自带皮肤预览。

需要自己设计皮肤的,推荐用这个图形化的皮肤设计器,鼠须管作者写的:LEOYoon-Tsaw/Squirrel-Designer

删词 or 降权

可以删除自造词,或降低词库中已有词语的权重(回到原始权重,不是降到最低)。

  • 鼠须管使用 Fn + ⇧ + ⌫
  • 小狼毫使用 Ctrl/Shift + Del

想永久删除一个词汇,只能编辑词库,重新部署。

Tab 切光标

这功能挺好用的,每次用别人的电脑打字都会怀念这个功能。

已经在 default.custom.yaml 中默认开启,可以使用 Tab 或 Shift + Tab 来在单字拼音前后移动。

2022-03-22-000487

对于「xian西安」「tian提案」这种拼音,如果想切到「xi、ti」的后面,只能用左右方向键移动。

另外 Shift + ⌫ 可以删除单个汉字的拼音。

不同的上屏方式

按下空格会上屏汉字,按下回车会上屏字母。

以输入「虐心 nue’xin」为例:

  • 按回车,上屏的是 nuexin
  • 按 Ctrl/Shift + 回车,上屏的是 nve xin。(u → v,中间有空格)

translator/preedit_format 这里会影响输入框和 shift + 回车时的显示,比如是显示 nue、nve 或 nüe。

如果是双拼方案,preedit_format 还可以选择是否在输入框进行转换,比如是显示「zz走」还是「zou走」。