Rime不能简单归类为输入法,确切来说,这是一套输入法的框架,而「鼠鬚管」是其在 MaxOS 系统上的应用程序。具体操作系统与输入法可参考下表。
操作系统 | 对应的输入法 | github |
---|---|---|
Windows | 小狼毫 | https://github.com/rime/weasel |
macOS | 鼠鬚管 | https://github.com/rime/squirrel |
Ubuntu | 中州韵 | https://github.com/rime/ibus-rime |
iOS | 仓输入法 | https://github.com/imfuxiao/Hamster |
Android | 同文输入法 | https://github.com/osfans/trime |
这些应用使用输入方案的配置+对应方案为基础运行条件,因此在这套框架下,理论上只要通过整合不同的配置文件,就能实际高定自定义的输入法。
需要说明的是,市面上已经有很多成熟的输入法软件,而 Rime 的定制需要一定的上手门槛,如果你在日常生活中,对输入法并没有太高的要求,抑或者工作中并不需要通过定制词库来提高生产效率,那么本文中的大部分内容可能对你无效。
本文为查询资料时所做笔记,用于个人回顾相关知识时作为参考。
由于个人的主力平台为 macOS+iOS,因而内容以鼠须管+仓输入法为主。但正如前文所言,只是平台应用不同,实际底层都是 Rime 这一套自定义的配置与词库的组合。如果你对 Rime 这类定制输入法感兴趣,需要查询相关资料,本文可提供一定参考。
市面上已经有很多成熟的输入法应用,选择一款需要高度定制的输入法看似是件挺折(zhuang)腾(bi) 的事情。由于本人打小以五笔字形为主要输入法,对词库的依赖度很高,加之早年实习期间,有过一段对固定词库高度依赖的工作经历,因此对定制输入法有独特的情怀。
主流的输入法要做到好用,无外忽对词库的扩展增强与更丰富的界面定制。为了使产品更「易用」,多数功能需联网使用,所谓产品优化。这在键入一些个人关键信息时,总不免有被窥视的不适之感,因而 Rime 对于我来说,成了一个优选。
随着近些年来,苹果端对第三方输入法应用的开放,也终于能得偿所愿,故而在此记录。
最后,本文内容可能会随着时间变化更新,我会在个人博客中持续更新,若你在公众号读到这篇文章,可在文末阅读全文中找到原文地址与更新。
本文目录
"/Library/Input Methods/Squirrel.app/Contents/SharedSupport/"
我们要做的修改通常在 ~/Library/Rime/
目录下,由于 Rime 支持用户高度自定义,我需要了解该目录中文件的主要用途
installion.yaml
文件记录的是当前 Rime 程序的版本信息。其中有一个字段 installation_id
用来在同步用户词典时唯一标记当前 Rime 程序。
user.yaml
文件记录用户的使用状态。比如上次“重新部署”的时间戳,上次选择的输入方案等。
build
目录下放的是每次“重新部署”后生成的文件。包括字典文件编译后生成的「.bin」文件,包括与自定义配置合并后生成的各种 yaml 配置文件。
xxx.userdb
目录下放的是对应输入方案的用户词典。即用户在使用时候选择的词组、词频等动态信息,这个目录是实时更新的。
sync
目录是用来做用户数据同步的。即点击鼠须管的同步用户数据后,会将用户配置目录下的内容同步复制到该目录内。每个 sync/installation_id
目录对应不同设备上的 Rime 程序的用户数据。
[!WARNING] 注意
如果想要修改配置,建议不要直接修改原有的default.yaml
文件,而是应该新建一份default.custom.yaml
文件,其中xxx
与原文件名相同。这是因为部分不同的输入方案会使用同名的默认配置,对于需要自定义配置的内容,使用新建的配置以免自定义配置丢失。
如果不知道需默认需要配置哪些,可以导入一份别人已经做好的输入方案+配置列表。
Awesome-rime 这个开源项目整合了市面上主流的形码,声码,汉语与小语种方案,感谢@ayaka 14732 的整理。
GitHub - ayaka14732 Awesome Rime 輸入方案和配置列表
你通过查看配置中的快捷键来切换不同的输入方案,以及切换方式,候选词等相关配置。
patch:
# 菜单中可选的方案列表,可根据喜好自行调整顺序,第一位为默认方案
schema_list:
- schema: numbers # 大写数字
# - schema: wubi86_jidian_trad # 五笔 - 简入繁出
# - schema: wubi86_jidian_trad_pinyin # 五笔拼音混输 - 简入繁出
- schema: wubi86_jidian # 五笔
- schema: wubi86_jidian_pinyin # 五笔拼音混输
- schema: pinyin_simp # 普通拼音
menu:
page_size: 8 # 候选词数量,最多支持 10 个
switcher:
hotkeys: # 弹出菜单的快捷键
- "Control+0"
- "Shift+Control+0"
abbreviate_options: true
caption: "【 输入法设置 】"
option_list_separator: "|"
配色外观的配置文件是 squirrel.yaml
,我们需要在用户配置目录下新建一个 squirrel.custom.yaml
文件。
该文件为鼠须管的外观配置文件,配置内容包括配色,排版方式,字体等。
一套方案必须包含方案定义文件 (.schema.yaml
) 和词典文件 (.dict.yaml
)
文件名前缀为<schema_id>,如 wubi86_jidian,该文件配置包含方案 ID,方案名,版本号,作者词库依赖等基本信息。
还包含该方案下的核心组件。
画了一张图,大体说明了 Rime 的核心组件与工作原理。
.dict.yaml
)以我使用的极点五笔 86 这套方案为示例:
---
name: wubi86_jidian #词典名。可以与输入方案标识(`schema_id`)一样,也可以不一样
version: "4.3" #词典版本
sort: by_weight # by_weight=权重 original=原始
import_tables: # 此处是添加用户自定义词库的地方
- wubi86_jidian_user # 个人私有词库
- wubi86_jidian_user_hamster # Hamster 词库
- wubi86_jidian_extra # 扩展词库
use_preset_covabulary: true #这个导入的是系统配置目录下的essay.txt,
#以下为码表
共享目录下的 build
里放着程序发布时预编译好的「.bin」文件,用户目录下的 build
里放着用户点击“重新部署”后生成的「.bin」文件。
以下是生成的主要二进制文件以及用途。
<方案标识>.prism.bin
derive/^([nl])ve$/$1ue/
“,生成对应关系「lve」→「lue」。这样当用户输入「lve」时,就可以根据该对应关系去找「lue」的字)<方案标识>.table.bin
.dict.yaml
<方案标识>.reverse.bin
使用拼写运算来实现智能纠错和模糊音的功能。如果不开启,必须严格按照词典文件中的定义。使用五笔方案不太会用到该功能,故不作此方面笔记。感兴趣可阅读文末的参考文章。
配置在半/全角模式下,敲击目标键给出相关候选,如敲下 /
时,给出 ÷
或 、
这类候选,在方案配置下修改。
punctuato r:
full_shape:
# ... 省略 ...
"/": ["/", "÷"]
half_shape:
"/": [ "、", "、", "/", "/", "÷"]
新建一个 <name>.extended.dict.yaml
文件,配置中的 name 需要与词典后缀前一致。*.extended
并非必要的,只是便于区别这是一个扩充的词典,比如我自己习惯用 <name>.extra.dict.yaml
在对应输入方案的字典配置中,使用 import_tables,将该词典导入到该输入方案中,可以针对不同的使用场景进行配置。
示例:新建一个国家地区的词典,命名为 china_district.extra.dict.yaml
,在自己使用的 wubi86_jidian.dict.yaml
的配置中调中该词库
#该配置为 `wubi86_jidian. dict.yaml`
name: wubi86_jidian
version: "2.0"
sort: by_weight # by_weight=权重 original=原始
import_tables: # 此处是添加用户自定义词库的地方
- wubi86_jidian_2357 # 个人私有词库
- wubi86_jidian_user_hamster # 移动端Hamster 词库
- china_district_extra # 自定义扩展的国家地区词库
如果你的拼音用户,不建议使用英文单词和首字母简拼作为拼音词典的编码。由于 rime 的切片机制,这样做会将原本需要的其他备选词给覆盖掉。针对于需要此类映射的词,如 msd->马上到
,比较熟悉的就是使用自定义短语。
由于五笔输入没有这种切片的机制,因此可以不使用自定义短语而直接设置编码,以下示例拼音用户可参考。
由于自定义短语独立于词典,候选词的优先级有太高,请谨慎使用。更具体的自定义短语可参考文末哈呜王的文章,他讲得比官方文档更详情。
## custom_phrase.txt示例
custom_phrase:
dictionary: ""
user_dict: custom_phrase #需要与自定义短语文件同名
db_class: stabledb
enable_completion: false
enable_sentence: false
initial_quality: 1
通过往 .dict.yaml
中手动添加词库,即有手动造词
感谢 @KyleBing 的开源项目五笔码表助手 ,提供了图形化的造词界面
自动造词会关闭自动上屏+顶字上屏的功能 (毕竟要确定选择的词)
需要修改 wubi86_jidian.schema.yaml
下面几个内容
speller:
# max_code_length: 4 # 四码上屏
auto_select: false # 自动上屏
translator:
enable_sentence: true # 句子输入模式
enable_user_dict: true # 是否开启用户词典(用户词典记录动态字词频,用户词)
enable_encoder: true
权重数量越大,权重越高,排名越靠前。
Rime 默认加载 Lua 脚本路径应该为:用户配置目录/rime.lua
如果自己不会写,也可以从网络上找到其他人已经编写好的脚本。添加完 LUA 脚本后,需要在对应输入方案的配置文件中,从 engine/translators 中引入该脚本。
引入示例:
patch:
engine:
translators:
- lua_translator@*<脚本名>
#添加 lua脚本
多端同步的原理就是使用相同的配置地址进行同步。
因为我个人都是 Apple 平台的,使用 iCloud 同步,
又因为 iOS 平台默认保存在 iCloud 中如果你是其他平台,这个存储地址就以 iOS 为主。
首次同步时需要确定好共用的方案即可,当然也可以根据需要,针对设备的不同,定制不同的输入方案。
如果将 PC 方案传到移动端,可在移动端开启 Wi-Fi 上传方案的服务,将 Mac 端中的方案配置目录 RIME 替换掉移动端原目录即可。
如果将移动端方案传至 PC 端,可开启 iCloud 同步,拷贝应用文件至 iCoud,注意这样会覆盖 iCloud 内原有的同名文件,需要注意备份。
参考:一日一技 | 用 iCloud Drive 实现 RIME 输入法配置跨平台同步 - 少数派
参考:多设备同步 | oh-my-rime输入法
需要查看特定程序的 info. Plist,找到类似包名的字符串,如 com. apple. Xcode
,具体操作
可自行百度,或参考官方文档:CustomizationGuide · rime/home Wiki · GitHub
# --- 特定程序定义初始状态的英文输入 ---
app_options:
com.termius-dmg.mac: # Terminal - Mac
ascii_mode: true
com.googlecode.iterm2: #iTerm2 -Mac
ascii_mod: true
Dict 的词条应该使用 ...
为首行,部分编辑器会自动调整格式,将 yaml 的 ...
转换为 ---
,这样的修改会导致配置失效
---
name: wubi86_jidian_extra
note: "扩展词库"
version: "2024-01-01"
last_edit_time: "2024-01-1"
dict_grouped: true # 词库管理应用识别:标记该码表为分组模式
sort: original
# 码表的排序方式: by_weight 权重,original 原始顺序
... # <-<-特别注意这里是三个点,而不是三道杠
## 汽车
朗逸 yvqk
验车 cwlg
幫助與反饋 | RIME | 中州韻輸入法引擎 - 官方文档
鼠须管输入法配置 – 哈呜.王 -写得特别好的第三方文档,本文着重以此为笔记
App +1 | 仓输入法:让 iOS 也能舒服的用上 Rime - 少数派 -介绍了 iOS 端笔记的同步方法
Rime 配置:雾凇拼音 - Dvel's Blog