Mac 中文输入法 – Rime
Rime 输入法
Mac 下名字叫 「鼠须管」squirrel ![]()
Windows 下名字叫「小狼毫」weasel
Linux 下名字叫「中州韵」ibus
App 网站: https://rime.im
Q: Why Rime?
A: 一款本地输入法 (没有云端),可以高度自定义,实现众多功能,包括候选框的大小与皮肤,词库与短语等,通过修改本地配置文件,并最终把它打磨成一款完全符合你输入习惯的输入法。[且 Apple 自带输入法非常反中文… 词库蹩脚自不必说,基本也告别了多音字。]
使用下来之后,觉得确实选词更智能,第一候选词正确率很高,基本不需要翻页。Rime 的学习能力很强。新词输入一两次之后就会成为第一候选了。
牛逼之处详见知乎: 超全超详细 Rime 中州韵输入法配置指南
Q: 有没有什么缺点呢?
A: 可以说是用细微 bug 换取中文输入法的便捷。VS Code Snippets 好像有点儿问题。中文输入下 autocomplete 不能用 Tab 键选择候选词。
快速输入时会吞词。如果缓慢输入, Rime 可以捕获全部输入内容。
帮助资料
-
用户指南 (快速入门): https://github.com/rime/home/wiki/UserGuide
Wiki 的目录中,UserGuide 比较靠下,需要展开目录 (
show 10 more pages) 才能看到。用户说明是繁体,就很烦,不适应…
- 配置文件: https://github.com/rime/home/wiki/Configuration
- 定制指南、必知必会: https://github.com/rime/home/wiki/CustomizationGuide
- 设定项速查手册、
*.schema.yaml详解:-
Rime 输入方案设计书: https://github.com/rime/home/wiki/RimeWithSchemata
<shema-ID>.schema.yaml文件里面的设定项详解。
-
-
基本上是 GitHub Wiki 页面的用户友好版本,容易索引,看起来更美观。
快速入门
切换输入方案: Ctrl + `
分隔拼音: ' (single quote) 如 xi'an → 西安
符号表情 以v 开头的拼音缩写可以输入各种符号表情:
vszq会显示数字圈 ⓪, ①, ②, ③, ④, ⑤, …vzmq会显示字母圈 ⓐ, ⓑ, ⓒ, ⓓ, ⓔ, …vzmh会显示字母弧 ⒜, ⒝, ⒞, ⒟, ⒠, …
安装 app
-
首先进入 Rime 的官网,直接下载安装鼠鬚管的安装包
Squirrel.pkg并安装。安装完成后,系统会提示退出重新登录。 -
然后进入 System Settings -> keyboard -> All Input Sources,点击左下角的 + 号,选择「Chinese, Simplified」,然后选择「鼠鬚管」或者 Squirrel - Simplified,点击「添加」。
-
之后就可以在菜单栏的输入法图标中选择「鼠鬚管」作为当前输入法。
快速入门:https://github.com/rime/home/wiki/UserGuide#打字入門
安裝配置器
/plum/ (中文名: 东风破) 是 Rime 输入法下的配置管理工具。
Refer to Plum GitHub repo for
- installation of Rime configuration manager – Plum
- installation of Rime input method packages
- overview of basic input methods / packages
In /plum/ terms, a re-usable piece of configuration is known as a recipe (配方), denoted by the “℞” symbol.
初始化
curl -fsSL https://raw.githubusercontent.com/rime/plum/master/rime-install | bash
The one-liner runs the rime-install script to download preset packages and install source files to Rime user directory. (Yet it doesn’t enable new schemas for you)
以上命令行,安装配置管理器及预设配方。
安装输入方案
plum 是 Rime 输入法下的配置管理工具,提供了安装输入方案的功能。
You can add packages from all the great Rime developers on GitHub by specifying a list of package names or refer to packages by <user>/<repo>:
-
注意以下命令行务必在
plum目录下执行,否则会报错bash: rime-install: No such file or directory。# 进入 plum 目录 cd /Users/menghan/plum # Install Syntax (输入法安装口令) bash rime-install <package-names-or-repo-paths> -
如果不想在 plum 目录下执行,可以把 plum 目录添加到环境变量 PATH 中。
例如可以在 Shell 配置文件
~/.zprofile的末尾添加export PATH="$PATH:/Users/menghan/plum"然后就可以在任何目录下执行
rime-install命令了。 -
若要更新 plum 本身,执行
bash rime-install plum即可。
# 从 GitHub 安装配方 或者 其他作者的配置方案
# 比如 lotem-packages.conf 是一个包含多个输入方案的配置文件
bash rime-install https://github.com/lotem/rime-forge/raw/master/lotem-packages.conf
# Method 2: or in short form: "<user>/<repo>/<filepath>"
bash rime-install lotem/rime-forge/lotem-packages.conf
# Method 3: or specify a branch: "<user>/<repo>@<branch>/<filepath>"
bash rime-install lotem/rime-forge@master/lotem-packages.conf
Q: What is a Rime input schema?
A Rime input schema (Rime 输入方案 / 输入法) defines the rules of a specific “input method”.
It consists of
- a configuration file named
<schema_id>.schema.yaml, and- a customization file named
<schema_id>.custom.yaml(用户自定义文件,可用于修改具体输入方案的默认配置) - 用户自定义文件名:将默认配置文件名中的
schema替换为custom即可。<schema_id>.custom.yaml优先级高于<schema_id>.schema.yaml,可以覆盖默认配置。
- a customization file named
- usually an optional Rime dictionary (韵书) file named
<schema_id>.dict.yaml.
luna_pinyin_simp 是一個单独的输入方案,有自己的配置文件,与 luna_pinyin 切换到简体模式有所不同。
luna_pinyin.schema.yaml:朙月拼音输入方案 → 可选择简体或繁体- 若要修改其配置,可以创建
luna_pinyin.custom.yaml文件,在其中添加配置项目。 - 使用后发现与 luna_pinyin_simp 相比,更加智能。比如中西文的自动切换,会更容易切换正确。标点的全半角更符合个人习惯。
- 若要修改其配置,可以创建
luna_pinyin_simp.schema.yaml:朙月拼音・簡化字輸入方案
用户词典
词库是输入法好用的灵魂。Rime 有丰富的词库资源供用户安装。且用户可创建自己的词库,个性化定制输入法。
-
〔用户词典〕
<词典名>.userdb/或<词典名>.userdb.kct根据用户使用习惯,输入法自动生成的 “用户数据” (User Data)。包括实际上屏 (即在候选列表中选中,完成输入) 过的所有词汇及其上屏次数。
自己调教训练的词库。
-
〔用户词典快照〕
<词典名>.userdb.txt、<词典名>.userdb.kct.snapshot见于同步文件夹 -
新建一个扩充词典文件,如
luna_pinyin.extended.dict.yaml。Caveat:
-
不要将英文单词用作拼音词典的编码
会导致输入法无法正确识别拼音编码,只能输入英文单词,无法输入中文。
-
不要将简拼用作拼音词典的编码
雾凇拼音的扩展词库
cn_dict/ # 中文词库目录 ├── 41448.dict.yaml # 常用字表,《通用规范汉字表》+ 基本的扩充 ├── 8105.dict.yaml # Unihan 大字表 (按需启用,默认未启用) ├── base.dict.yaml # 基础词库,含两字词及调频 ├── ext.dict.yaml # 扩展词库,小词库,含多音字注音 ├── others.dict.yaml # 一些杂项,以及 Emoji 映射 └── tencent.dict.yaml # 腾讯词向量(大词库,部署时间较长) en_dicts/ # 英文词库目录 ├── en.dict.yaml # 20k 左右的常见单词 + 少许补充 └── en_ext.dict.yaml # 扩展词库,大部分是缩写或互联网相关。 -
-
输入法自定义配置文件中,添加用户词典设定项,如
custom_phrase.txt.
其中 <schema-ID>.dict.yaml 和 custom_phrase.txt 合称为用户词库。具有以下特点:
- 均由用户自行维护,词汇的创建、修改、删除通过直接编辑 yaml 或 txt 文档完成;
- 用户创建的词汇,输入码与输出值可以不存在拼音上的对应关系,如输入“shen jiao suo”出现“深圳证券交易所”候选,输入“shen fen”出现你的身份证号候选。也正因如此,中英混输才可以实现;
- ❗无法通过输入法自带的同步功能被同步。
词典文件范例 luna_pinyin.extended.dict.yaml
---
name: luna_pinyin.extended #
version: "2025.09.12"
sort: by_weight
use_preset_vocabulary: true
# 在这里导入其他词典
import_tables:
- luna_pinyin # 导入原版明月拼音的词典
...
自定义词库文件
自定义词库文件以 <my-dict-name>.dict.yaml 命名,位于 Rime 用户文件夹下。用户可以在其中添加自己常用的词汇,输入对应的编码即可快速输入这些词汇。
*.dict.yaml 优于 custom_phrase.txt,因为它可以被翻译器直接调用,不用训练 (有些词没办法训练),就可以从里面读取自造词。支持自动同步。
我的配置
-
新建词库文件
my_dict.dict.yaml,输入以下内容# User custom dictionary for Rime input method --- name: my_dict version: "2026-05-05" sort: by_weight ... # 用户自定义词条 # 以 Tab 分割:词汇<Tab>编码<Tab>权重,数值越大权重越高 menghan you xiang 3 又双叒叕 uuuu 1 主儿 vue 1 重记 zhong ji 3词库名
xxx.dict.yaml和词库中的属性name: xxx可以不同,但建议设置为一样的。 -
配置输入方案,挂载自己的词库。
以雾凇拼音为例,在输入方案的
rime_ice.dict.yaml的import_tables字段添加my_dict,如下所示:# Rime dictionary # encoding: utf-8 --- name: rime_ice version: "2024-11-27" import_tables: - cn_dicts/8105 # 字表 # - cn_dicts/41448 # 大字表(按需启用)(启用时和 8105 同时启用并放在 8105 下面) - cn_dicts/base # 基础词库 - cn_dicts/ext # 扩展词库 - cn_dicts/tencent # 腾讯词向量(大词库,部署时间较长) - cn_dicts/others # 一些杂项 # 建议把扩展词库放到下面,有重复词条时,最上面的权重生效 - my_dict # 用户自定义词库 # - mydict1 # 挂载配置目录下的 mydict1.dict.yaml 词库文件 # - cn_dicts/mydict2 # 挂载 cn_dicts 目录里的 mydict2.dict.yaml 词库文件 ...cn_dicts是雾凇拼音的词库目录,里面有很多预设的词库,用户可以根据需要选择性启用。建议把自定义词库放在最后面。确保
rime_ice.schema.yaml中的翻译器正确挂载词库文件rime_ice.dict.yaml,如下所示:# rime_ice.schema.yaml translator: dictionary: rime_ice # 挂载词库文件 rime_ice.dict.yaml -
重新部署输入法,输入相应的编码就可以显示相应内容了。比如输入
vue就会显示「主儿」这个词了。词库文件大的情况下,首次部署会比较慢,需要等一会儿。 如果下次部署前没有修改词库,就会很快完成部署。↩
ref:
添加自定义短语
custom_phrase.txt 是一个用户自定义短语文件,位于 Rime 用户文件夹下。用户可以在其中添加自己常用的短语,输入对应的编码即可快速输入这些短语。
❗custom_phrase.txt 是 tabledb 格式的文本文件,不支持自动同步。若想同步用户自定义短语,
- 推荐使用
userdb格式的二进制文件,或者 - 在多个设备上手动编辑
custom_phrase.txt文件并保持一致。
使用说明
-
Rime 用户文件夹下,新建
~/Library/Rime/custom_phrase.txt输入内容,每行由这些组成:
文字、短语、权重(决定重码的次序、可选),它们之间使用Tab制表符分隔,其中权重可以省略。 权重数值越大优先级越高。 如果备选词有多个音节,用空格隔开。以 Tab 分割: 词汇<Tab>编码<Tab>权重 JavaScript→ js React→ react Vue→ vue→ 3 Vue 3→ vue→ 2 Vue 2→ vue→ 1保存重新部署之后,输入相应的短语就可以显示相应内容了,例如
菜单栏 Squirrel >「同步用户数据」后,用户自定义短语即可在其他设备上使用。
Tips:
- 建议这个文件直接使用系统自动的文本编辑器 TextEdit 编辑,且使用 UTF-8、LF 编码和回车(毕竟代码编辑器的 Tab 键可能设置成了空格
- 用 TextEdit 打开,选择「格式」→「使纯文本」,然后保存时选择「如果没有扩展名,请使用 .txt」,并选择「Unicode (UTF-8)」编码。
- 缺点是不显示空白符 (whitespace characters),无从知道是空格还是 Tab。
- 推荐用 BBEdit,文件信息可从下方状态栏看到。空白符可显示。
-
Vim 里可以直接配置
:set fenc=utf8 nobomb ff=unix:set list显示空白符,在我的 Vim 配置里,Tab 会显示为>·。我的 Vim 里面默认 Tab 是 4 个空格,所以在 Vim 里输入 Tab 键会变成 4 个空格。可以先按
Ctrl+V,然后按 Tab 键来插入真正的 Tab 字符。
- 建议这个文件直接使用系统自动的文本编辑器 TextEdit 编辑,且使用 UTF-8、LF 编码和回车(毕竟代码编辑器的 Tab 键可能设置成了空格
-
载入词库以启用自定义短语。
这个文件编辑完成之后就可以到输入具体方案文件(
<schema-ID>.custom.yaml)里添加内容:patch: engine/translators/@2: table_translator@custom_phrase # 用户自定义词典设定项 custom_phrase: dictionary: "" user_dict: custom_phrase db_class: stabledb enable_completion: false enable_sentence: true initial_quality: 1这里的
@2是指engine/translators列表中的第三个元素。从0开始计数。
如果不确定,可查阅具体的输入方案文件,找到
engine/translators列表,确认一下翻译器顺序。比如
luna_pinyin.schema.yaml里面的engine/translators列表如下:用户自定义词典翻译器是在第二个位置 (
@1),@0是拼音翻译器,@2是反查翻译器。
Attributes:
dictionary: 翻译器将调取此字典文件user_dict: 设定用户词典名db_class:: 设定用户词典类型,可设tabledb〔文本〕或userdb〔二进制〕enable_completion: 提前显示尚未输入完整码的字〔仅table_translator有效〕enable_sentence: 是否开启自动造句initial_quality: 设定此翻译器出字优先级,数值越大优先级越高
See HERE for all attributes of a translator.
雾凇拼音中用户自定义词典翻译器的位置是第五个位置 (
@4),见rime_ice.schema.yaml文件中的engine/translators列表。engine: translators: - punct_translator - script_translator - lua_translator@*date_translator # 时间、日期、星期 - lua_translator@*lunar # 农历 - table_translator@custom_phrase # 自定义短语 custom_phrase.txt - table_translator@melt_eng # 英文输入 - table_translator@cn_en # 中英混合词汇 - table_translator@radical_lookup # 部件拆字反查 - lua_translator@*unicode # Unicode - lua_translator@*number_translator # 数字、金额大写 - lua_translator@*calc_translator # 计算器 - lua_translator@*force_gc # 暴力 GC
Q: 啥是翻译器?
A: 简而言之,翻译器完成由内部编码到文字的翻译。↩︎更多关于translator 翻译器。
engine: translators: - punct_translator # 标点符号翻译器 - table_translator@custom_phrase # 用户自定义词典,拉丁字母翻译器 - reverse_lookup_translator # 反向查询翻译器 - script_translator # 罗马字母翻译器
用户自定义词典设定项
以下解释自定义词典常用字段的含义:
patch:
engine/translators/@2: table_translator@custom_phrase
# 用户自定义词典设定项
custom_phrase:
dictionary: "" # 字典文件
user_dict: custom_phrase # 在本地生成的用户词典名称
db_class: stabledb # 用户词典格式,tabledb(文本) 或 userdb (二进制)
enable_completion: false # 禁止补全; 编码逐渐提示开关;编码提示
enable_sentence: true # 造句; 是否整句连打,是否自动造句,否则为四码自动上屏
initial_quality: 1 # 该翻译器出字优先级别
enable_encoder: true # 是否自动造词
enable_user_dict: true # 是否开启用户词典,以记录动态字频和用户词词频
db_class 值默认为 userdb
-
userdb: 即二进制文件,输入过的内容会记录在*.userdb/文件夹中,只有在同步后才能在同步目录看到人类可读的用户词典。如有多平台同步需求,使用默认值
userdb。配置目录下会生成
*.userdb/文件夹 (比如雾凇拼音会生成rime_ice.userdb/文件夹),里面是二进制的用户词典。点击「同步用户数据」后,Rime 会和配置目录下的
*.userdb/进行双向更新同步,并在同步目录(<sync-dir>/<installation_id>)下生成*.userdb.txt,里面都是输入过的内容。 -
另一个值是
tabledb,会直接在配置目录生成一个人类可读的.txt文本文件。支持动态调频。 -
stabledb是tabledb的一个变体,文本格式词库,只读数据库,无法动态调频。
ref:
- https://github.com/rime/home/wiki/UserGuide#添加自定義短語
- https://uicop.com/post/93#定义常用短语
- 用户词典管理
- 雾凇拼音: 同步
Rime 配置文件目录
参考资料
💡Main Takeaways:
-
用户配置文件目录
/Users/<user-name>/Library/Rime/See HERE for a GitHub backup for the Rime configuration files.
❗The GitHub repo is private for security reasons because it contains sensitive user data. User input history is highly sensitive, keep your user dictionary (
.userdb.txt) secure and private.Q: 为啥在 iCloud 已经有同步文件了,还要在 GitHub 备份用户配置文件?
A: 原因有二:- iCloud 同步文件夹里面的配置不完整,无法根据它恢复输入法的完整配置。
- iCloud 无版本控制,无法追踪修改历史。
-
注意修改配置后需要重新部署 (deploy) 输入法。
如果担心之后的配置出了问题找不到,可以每一步都重新部署一次,确保代码没有出现问题。
部署后出现错误,请查看 INFO 日志 (参考),找到行首字符为 E 的记录,根据错误信息以及上下文排查出错的配置文件。
-
对
*.schema.yaml文件直接修改可以生效,但是弊端是如果 Rime 升级了,可能会覆盖掉你的修改。所以推荐使用*.custom.yaml文件来覆盖默认配置。Syntax:
patch: "一级设定项/二级设定项/三级设定项": 新的设定值. E.g., 以下例子设定每页候选词个数为 4 (允许的范围是 1〜9):更多关于打补丁的语法见输入方案的配置。
在用户目录建立文档
default.custom.yaml(对应default.yaml的自定义),添加以下内容:patch: # ✅ 修改列表中一个具体字段 "menu/page_size": 4反例:patch: menu: # ❌ 不要用这个 这样会导致 menu 下只有 page_size 一个配置 page_size: 4注意:
-
不要用这个,这样会把所有
menu内部的配置内容清空,只有一个page_size配置。↩︎ -
如果有较多修改项,可以直接从
default.yaml全部复制过来,再修改。 -
如果选项是数组,比如
switches,得用switches/@n:什么的,可读性不好,改多了就乱了,万一原始方案文件更改了顺序就会造成错误,不如全部复制过来再改。↩︎
Q: 如何知道我把原始配置清空了?
A: 输入框,候选词框完全没有颜色了,很难看清。最后重新部署输入法即可生效。
-
- 自定义配置除了文件名有差异之外,它的配置项也比默认的配置多一个层级,需要统一放在
patch节点之下。- 一个
*.custom.yaml文件内只能有一个patch节点。
- 一个
- 若要添加新的设定项,可以在
patch下添加新的行name: value。name字段可以是多级的,用/分隔。name字段可选用单/双引号括起来,如'name': value或者“name”: value。
-
对
default.custom.yaml的修改会影响所有输入方案。 -
如果只想影响某个输入方案,可以修改对应的
<schema-ID>.custom.yaml文件,例如luna_pinyin.custom.yaml。注意自定义文件名:将默认配置文件名中的
schema替换为custom即可。<schema-ID>.custom.yaml优先级高于<schema-ID>.schema.yaml,可以覆盖默认配置。
配置文件
| 默认配置 | 自定义配置 | 功能 |
|---|---|---|
default.yaml |
defalut.custom.yaml |
全局配置 |
squirrel.yaml |
squirrel.custom.yaml |
鼠须管外观设置; 在指定的应用程序中,改变输入法的初始转换状态 (全局配置) |
luna_pinyin.schema.yaml |
luna_pinyin.custom.yaml |
朙月拼音输入方案 (局部配置) |
rime_ice.schema.yaml |
rime_ice.custom.yaml |
雾凇拼音输入方案 (局部配置) |
Note:
- 局部配置优先级高于全局配置。
<schema-ID>.custom.yaml优先级高于<schema-ID>.shcema.yaml。
常用配置文件
全局配置文件:
-
default.custom.yaml: 默认核心配置文件,自定义全局样式。比如可设置候选输入法,候选词个数,按键绑定,中英切换等。
-
squirrel.custom.yaml: 修改 rime 的 皮肤设置,候选词横排显示,程序默认英文等,定制外观。新建文件,输入你想要的配置项即可。
针对具体输入方案 (schema) 的配置文件:
luna_pinyin.schema.yaml朙月拼音pinyin_simp.schema.yaml拼音・简化字rime_ice.schema.yaml雾凇拼音
Q: 如何修改每页候选词个数?
A: rime 默认的是5个候选词。修改 default.custom.yaml 文件中的 page_size 字段,例如:
patch:
"menu/page_size": 4
default.custom.yaml
设置
- 候选输入法: 只保留需要的输入法
- 候选词个数
- 按键绑定
- 中英切换
只保留明月拼音和雾凇拼音
默认安装有很多输入方案,可以只保留需要的输入方案,其他的删除掉。
# default.yaml
schema_list:
- schema: luna_pinyin # 明月拼音
- schema: luna_pinyin_simp # 明月拼音 简化字模式
- schema: luna_pinyin_fluency # 明月拼音 语句流
- schema: bopomofo # 注音
- schema: bopomofo_tw # 注音 台湾正体模式
- schema: cangjie5 # 仓颉五代
- schema: stroke # 五笔画 (笔画输入法)
- schema: terra_pinyin # 地球拼音 dì qiú pīn yīn
只保留需要的输入法: default.custom.yaml 中修改 schema_list 字段
# default.custom.yaml
patch:
# 添加你想要保留的输入方案
schema_list:
- schema: luna_pinyin # 明(朙)月拼音,默认繁体比较烦 ❌
- schema: rime_ice # 雾凇拼音,专业简体;智能自动配置,安装即用;✅
schema 名字去 <sheme-ID>.schema.yaml 里找 schema_id 字段,例如 rime_ice.schema.yaml 里有
schema:
schema_id: rime_ice
ascii_composer/switch_key ↩︎
可用的按键有 Caps_Lock, Shift_L, Shift_R, Control_L, control_R
- 设为
noop,屏蔽该切换键 Shift_L为左 Shift,Shift_R为右 Shift
翻页
早先流行用 - 和 = 这一对符号换页,如今流行用 , 和 . 。
patch:
key_binder/bindings:
# 翻页
- { when: has_menu, accept: Tab, send: Page_Down } # "tab" 键翻页, 和下一条 "tab" 键分词只能二选一
- { when: composing, accept: Shift+Tab, send: Shift+Left } # "Shift+Tab" 键向左选拼音分词
- { when: paging, accept: minus, send: Page_Up } # "-" 上一页
- { when: has_menu, accept: equal, send: Page_Down } # "=" 下一页
- { when: paging, accept: comma, send: Page_Up } # "," 上一页
- { when: has_menu, accept: period, send: Page_Down } # "." 下一页
- { when: paging, accept: bracketleft, send: Page_Up } # "[" 上一页
- { when: has_menu, accept: bracketright, send: Page_Down } # "]" 下一页
语法解释
when: has_menu当展现候选菜单的时候,accept: <key>符号键,send: Page_Up向后翻页;when: paging当已有向后换页动作时,send: Page_Down向前翻页;- 我目前的设置为
=/]向后 和-/[向前换页。
ref:
快捷键
patch:
key_binder/bindings:
- { when: has_menu, accept: semicolon, send: 2 } # ":" (分号)选择第 2 个候选词
- { when: has_menu, accept: apostrophe, send: 3 } # "'" (引号)选择第 3 个候选词
- { when: composing, accept: Shift+Tab, send: Shift+Left } # "Shift+Tab" 键向左选拼音分词
- { when: composing, accept: Control+a, send: Home } # "Control+a" 光标移至首
- { when: composing, accept: Control+e, send: End } # "Control+e" 光标移至尾
- { when: composing, accept: Control+g, send: Escape } # "Control+g" 清码
- { when: composing, accept: Return, send: Escape } # "Return" 回车清码
- { when: always, accept: Control+Shift+1, select: .next } # 切换输入方案
- { when: always, accept: Control+Shift+2, toggle: ascii_mode } # 中/英文切换
- { when: always, accept: Control+Shift+3, toggle: full_shape } # 全角/半角切换
- { when: always, accept: Control+Shift+4, toggle: simplification } # 繁简体切换
- { when: always, accept: Control+Shift+5, toggle: extended_charset } # 通用/增广切换(显示生僻字)
- { when: composing, accept: Control+b, send: Left } # "Control+b" 移动光标
- { when: composing, accept: Control+f, send: Right } # "Control+f" 向右选择候选词
- { when: composing, accept: Control+h, send: BackSpace } # "Control+h" 删除输入码
主题外观
Rime 支持自定义皮肤主题,修改 squirrel.custom.yaml 文件中的 style 字段,例如:
An example configuration to customize the appearance of the Rime input method:
# squirrel.custom.yaml
patch:
show_notifications_when: appropriate # 状态通知,适当,也可设为全开(always)全关(never)
style:
color_schema: github # 主题,可选 apathy 等
horizontal: false # 是否水平排列 → deprecated,改成 candidate_list_layout: linear/stack
inline_preedit: true # 是否行内编辑
candidate_format: "\u2005%c\u2005%@\u2005" # 1/6 em 空格 => U+2005
label_font_face: "JetBrains Mono Medium" # "Skia"
label_font_point: 16 # 候选编号大小
font_face: Noto Sans Mono SC # 候选字字体
font_point: 21 # 候选字词大小
## 下面是关于输入法窗口外观的特殊设定
hilited_corner_radius: 3
corner_radius: 5 # 候选条圆角
border_height: 6 # 窗口边界高度,大于圆角半径才生效
border_width: 6 # 窗口边界宽度,大于圆角半径才生效
spacing: 2 # 候选词行距, 横向排列时无效
line_spacing: 6
border_color_width: 5
color_schema: github 配色名必须存在于 preset_color_schemas 之中。preset_color_schemas 是和 style 同级的一个字段,里面定义了很多预设的配色方案 (见 squirrel.yaml),用户可以直接使用这些预设的配色方案,也可以在 squirrel.custom.yaml 中 patch 添加自己的配色方案。
inline_preedit: true/false 是否行内显示输入码,defaults to true。
true输入码行内显示,候选框没有编辑区 ✅false行内显示空白占位符,候选框有编辑区 → ❗几个缺点: 不好看; theme 如果不适配,输入码会看不清楚; 插入文字的位置错误,光标会移动到词的中间。
inline_candidate: true/false 是否行内显示第一候选,defaults to false
inline_candidate |
|||
| true | false | ||
|---|---|---|---|
inline_preedit |
true | 第一候选及未成字编码皆行内显示,候选框没有编辑区 | 输入码行内显示,候选框没有编辑区 |
| false | 第一候选行内显示,候选框有编辑区 | 行内显示空白占位符,候选框有编辑区 | |
ref:
横排支持
# squirrel.custom.yaml
patch:
style:
candidate_list_layout: linear # 水平排列
在新版本中 (1.0.1 版本以后),style/horizontal 不再受支持,改成 candidate_list_layout: linear。See rime/squirrel GitHub Release Page.
ref:
输入方案的配置
针对具体输入方案 (schema) 的用户自定义配置文件
每个输方案都有自己的默认配置文件 <sheme-ID>.schema.yaml,可以创建 <sheme-ID>.custom.yaml 文件,在其中添加自定义配置项目。
- 不要在
<sheme-ID>.schema.yaml里直接修改,升级 Rime 可能会覆盖掉你的修改。 - 自定义设置添加到
<sheme-ID>.custom.yaml「方案选单」其优先级高于<sheme-ID>.schema.yaml,可以覆盖默认配置。 - 个人配置跟默认配置文件有重复是没有问题的。可以先将默认配置中需要修改的部分整体复制到个人配置中,然后再针对具体字段进行调整。这样会增强配置文件可读性,不必两个文件来回查阅。
- 此建议尤其适用于对
swithces这种数组类型的字段进行修改。
- 此建议尤其适用于对
# luna_pinyin.schema.yaml (明月拼音输入方案默认配置)
switches:
- name: ascii_mode
reset: 0
states: [ 中文 ] # 只保留中文输入法,避免无意间切到英文输入状态
- name: full_shape
states: [ 半角, 全角 ]
- name: simplification
states: [ 漢字, 汉字 ] # 默认繁体
- name: ascii_punct
states: [ 。,, ., ]
switches 字段定义输入法切换开关列表。列表顺序很关键,关系到自定义配置时的序号 @#,这个 # 要对应列表中的顺序。
@0(ascii_mode): 中英文切换@1(full_shape): 全半角切换,默认全角@2(simplification): 繁简体切换,默认繁体 → 建议改成简体。@3(ascii_punct): 中西文标点符号切换,默认中文标点
补丁的语法
patch 时支持用 / 来分隔节点。
比如默认配置文件如下
a:
b: value
c:
d:
e: value
打补丁时可以这样写
patch:
a/b: new_value
c/d/e: new_value
以明月拼音为例,修改 luna_pinyin.custom.yaml 文件。
# luna_pinyin.custom.yaml (明月拼音自定义配置)
patch:
"switches/@0/reset": 0 # 默认中文输入
"switches/@2/reset": 1 # 默认简体
engine/translators/@1: table_translator@custom_phrase
# 用户自定义词典设定项
custom_phrase:
dictionary: ""
user_dict: custom_phrase
db_class: stabledb
enable_completion: false
enable_sentence: true
initial_quality: 1
punctuator/full_shape:
# 全角标点举例,注意要将所有符号都复制粘贴过来
"(" : (
")" : )
... : ...
punctuator/half_shape:
# 半角标点举例,注意要将所有符号都复制粘贴过来
"(" : "("
")" : ")"
"#" : "#"
... : ...
列表字段解释:
-
switches: 输入法切换开关列表 ↩︎-
name: 开关名称ascii_mode: 中英文切换
full_shape: 全半角切换
simplification: 繁简体切换 \ reset: 切换时重置为第几个状态,0 是第一个states: 可选状态列表
例如上面配置中,
ascii_mode只保留了一个状态「中文」,避免无意间切到英文输入状态。 -
中英文标点符号
雾凇拼音配置文件: ~/Library/Rime/rime_ice.custom.yaml
-
punctuator: 句读处理器,将单个字符按键直接映射为文字符号。Syntax:
punctuator/<full_shape | half_shape>: { "<key>": "<mapped_character>" }对应不同状态:
full_shape全角标点,宽度大,占用两个字节;half_shape半角标点,宽度小,占用一个字节;
<key>是按键,<mapped_character>是映射后的字符,如映射一组字符,用[]括起来。- 注意
<key>按键均为半角字符,<mapped_character>可以是全角或半角字符 - 个人习惯是用半角,以后只在
half_shape里设置即可。
-
一对多可以用
[]括起来,例如:punctuator/half_shape: "...": ["...", "…"] -
有些标点符号需要 escape, 例如:Backslash
\, double quote",需要在前面加\转义,例如:punctuator/full_shape: "\"" : { pair: [ "“", "”" ] } "\\" : [ 、, \, "\\" ] punctuator/half_shape: "\"" : "\"" "\\" : ["、", "、", "/", "/", "÷"]punctuator/full_shape解释:{}表示一个对象/字典,用来定义键值对配置。pair表示成对符号,定义了符号的配对输入规则。 pair 是一个数组,包含两个元素。- 第一个元素
“:左引号 (开始符号); curly quote 弯引号 - 第二个元素
”:右引号 (结束符号); curly quote
第一次输入
"时,输出左引号“,第二次输入"时,输出右引号”。第三次输入又输出左引号,如此循环。半角下一律用
"(直引号)。 - 第一个元素
更多关于标点符号的配置举例见这里.
-
engine/translators: 翻译器列表,完成由内部编码到文字的翻译。table_translator@custom_phrase:用户自定义词典翻译器@1是指engine/translators列表中的第二个元素。序号从 0 开始计数。
Q: 如何知道某个列表元素构成和排列?
A: 可查阅具体的输入方案文件
<sheme-ID>.schema.yaml,找到engine/translators列表,确认一下翻译器顺序。比如明月拼音,可查询luna_pinyin.schema.yaml文件。patch: engine/translators/@1: table_translator@custom_phrase- 列表不分先后,书写顺序并不决定编译指令的先后。
- 注意序号从 0 开始计数,因此
@1是指engine/translators列表中的第二个元素。 @before <序号>代表<序号>之前的那个元素;@after <序号>代表<序号>之后的那个元素;@last代表列表中的最后一个元素;@after last可简写为@next,意为向列表末尾添加元素。- 更多语法见下方参考目录 ref 之补丁。↩︎
ref:
中英文切换设置
某一些 app 只需要英文输入法,比如 Alfred, Terminal 等。这时可以设置 Rime 在这些 app 里默认英文输入法,这样可避免手动切换。
Q: 中英文反复横跳,如何设置英文用系统默认,rime 默认为中文?
A:
-
找到你想要设置的输入法配置文件,例如
luna_pinyin.custom.yaml,然后添加字段如下:switches: - name: ascii_mode reset: 0 states: [ 中文 ] # 只保留中文输入法,避免无意间切到英文输入状态 -
全局配置文件
default.custom.yaml中,添加如下字段patch: ascii_composer/switch_key: # Shift_L: clear # Shift_R: clear Shift_L: noop Shift_R: noop key_binder/bindings: - { when: always, accept: Control+Shift+2, toggle: ascii_mode } - { when: always, accept: Control+g, send: Escape }- 这样设置后,Shift 键不再切换中英文状态,而是由
Control + Shift + 2来切换中英文状态。 accept: 用户实际输入的键;send: 发送给 rime 的按键;toggle: 切换某个状态;when: 什么时候生效。-
when可以接受的值有paging 翻页 has_menu 操作候选项用 composing 操作输入码用 always 全域
ref: https://blog.einverne.info/post/2021/10/rime-shortcut.html
- 这样设置后,Shift 键不再切换中英文状态,而是由
-
对于某些软件,如 Alfred, 只需要英文。应用场景为,当下输入法为 Rime 中文时,切换到 Alfred 之后自动变为英文输入。↩
在全局配置文件
squirrel.custom.yaml中添加字段如下:patch: # 以下程序中默认英文输入 app_options: com.runningwithcrayons.Alfred: ascii_mode: trueascii_mode设为true,表示该程序中默认英文输入;false表示该程序中默认中文输入。ascii_punct: true:开启英文标点 ↩︎
总结
-
如此设置后,英文用系统自带 ABC,中文用 Rime。相当于取消 Rime 自动中英文切换的功能。(因为有时会误切,不太聪明的样子) 而且当下是中文还是英文输入法状态,一目了然。Rime 状态栏不能显示中英文,每次都要在文档中动态显示,觉得一是很分心,二是中英文跳动太频繁,且自作聪明。
-
意外的效果是,现在可以直接 Space 键选词了,不需要按两次选第一候选词了。 根据试验,这个是
default.custom.yaml中的某个配置项起作用了 (具体哪个不详)。
不使用 Squirrel 英文态,但是依然想用 Shift_L 来切换中英文状态
Q: 如何在特定程序里关闭中文输入?
A: 修改 squirrel.custom.yaml 文件中的 ascii_mode 字段,例如:
patch:
app_options/<app-identifier>:
ascii_mode: true
自定义 Mac 应用程序的初始转换状态,首先查看应用的 Info.plist 文件,得到该应用的 Bundle Identifier,通常是形如 com.apple.Xcode 的字符串。
- 找到目标 app, 右键选择 Show Package Contents
- 进入 Contents 目录,打开 Info.plist 文件
- 搜索 (cmd + F) 找到
CFBundleIdentifier字段,复制其值
ref: 在特定应用中默认英文输入
iPhone 上使用 Rime 输入法
Q: iPhone 下有没有办法使用 Rime?
A: iOS 下有个 app 叫 仓输入法
「仓输入法」是基于 Rime 的 iOS 输入法。
参考资料:
- 用法见使用指南
- GitHub repo: https://github.com/imfuxiao/Hamster
- iPhone 拼音方案
快速入门: 方案选「仓·九宫格」,键盘布局选「九宫格」。
Q: 为什么我输入后,有中文候选字,但不显示拼音,而是显示数字?
A: 没有为方案添加 t9/isDisplayOriginalPreedit 选项或者此选项值不对。在 t9.schema.yaml 文件中添加以下内容:
# t9.schema.yaml
t9:
# 是否显示 rime 中原始的预编辑文本,默认为 true
# true: 对 preedit 不做处理,显示 rime 返回的原始 preedit 值。
# 如果想通过 lua 自己调整 preedit 的显示,可以设置为 true。
# false: 根据候选字 comment 显示转换后的 preedit 内容。
# 注意:请务必保证候选字 comment 有效且正确,否则可能导致预编辑文本显示异常。
isDisplayOriginalPreedit: false
t9.schema.yam 会被覆盖。如果发现九宫格输入法输入的是数字,且没有中文候选字,可能是因为新版本中 t9/isDisplayOriginalPreedit 选项恢复了默认值 true 了。需要手动修改回为 false。
Workaround: 新建 t9.custom.yaml 文件,以补丁的方式在其中添加上述配置项,这样更新就不会被覆盖了。
# t9.custom.yaml
patch:
t9/isDisplayOriginalPreedit: false
更多相关配置
# t9.schema.yaml
# import content from rime_ice.schema.yaml
__include: rime_ice.schema.yaml:/
speller:
# 注意: 这里添加了数字 0123456789
alphabet: zyxwvutsrqponmlkjihgfedcbaZYXWVUTSRQPONMLKJIHGFEDCBA0123456789
initials: zyxwvutsrqponmlkjihgfedcbaZYXWVUTSRQPONMLKJIHGFEDCBA0123456789
algebra:
# ### 超级简拼(可选)
- abbrev/^([a-z]).+$/$1/ # 超级简拼
- abbrev/^([zcs]h).+$/$1/ # 超级简拼中,zh ch sh 视为整体(ch'sh → 城市),而不是像这样分开(c'h's'h → 吃好睡好)。
- derive/^([nl])ve$/$1ue/
- derive/^([jqxy])u/$1v/
- derive/un$/uen/
- derive/ui$/uei/
- derive/iu$/iou/
- derive/([aeiou])ng$/$1gn/
- derive/([dtngkhrzcs])o(u|ng)$/$1o/
- derive/ong$/on/
- derive/ao$/oa/
- derive/([iu])a(o|ng?)$/a$1$2/
# ### 九宫格映射(必须)
- derive/[abc]/2/
- derive/[def]/3/
- derive/[ghi]/4/
- derive/[jkl]/5/
- derive/[mno]/6/
- derive/[pqrs]/7/
- derive/[tuv]/8/
- derive/[wxyz]/9/
__include 语法用来引入其他配置文件的内容。目标配置节点的路径以 <filename>:/ 开始,可省略扩展名 .yaml。
雾凇拼音推荐用 26 键输入法,九宫格输入法也支持,但需要额外配置。
Q: 九宫格下,雾凇拼音输入的是数字,且没有中文候选字?
A: 需要修改方案配置文件 rime_ice.schema.yaml:
-
添加
engine/processors/t9_processor选项,并且t9_processor必须要在列表首位。engine: processors: - t9_processor # 其他 processors -
添加 t9 配置参数
t9/isDisplayOriginalPreedit,并且设置为false。t9_processor会用来处理九键输入的字符,如回车键、删除键等。 -
在
speller添加t9映射此步骤将词库中的 ASCII 小写字母派生为数字,如 “abc” 映射为 “2”等,输入数字可模糊匹配词库,输入 ASCII 小写字母可精确匹配词库。
如此设置后可以输入中文,但是候选字显示无序拼音。「仓九宫格」方案候选字显示正常。
ref:
同步
Rime 同步功能可以将用户词典在多台设备之间进行同步,保持输入习惯的一致性。比如你有两台 PC,一部 iPhone,三台设备都安装了 Rime 输入法,并且配置了相同的同步目录,那么在其中一台设备上用户数据文件 *.userdb.txt 会自动同步到其他两台设备上。
注意
-
RIME 自动同步功能只支持
db_class: userdb类型(二进制格式)的词库。<schema-ID>.userdb.txt是输入方案记录用户输入习惯的词库文件。输入方案自动生成的用户词典文件,格式为二进制,db_class: userdb。Rime 同步功能会自动识别并同步这些用户词典文件。如果你的输入方案为
db_class: stabledb(如雾凇拼音) 或db_class: tabledb类型(文本格式)的词库,需要先将其转换为userdb类型,才能使用同步功能。 -
用户自定义词库 (
<schema-ID>.dict.yaml和custom_phrase.txt) 不支持自动同步功能,需要手动复制粘贴到其他设备的用户文件夹中。<schema-ID>.dict.yaml和custom_phrase.txt是用户自定义的词库文件,格式为文本,不属于 Rime 同步功能支持的userdb类型,因此无法自动同步。需要手动复制粘贴到其他设备的用户文件夹中。
更多关于用户数据和用户词库见这里.
配置同步文件夹
要实现多端同步,需要解决的最核心问题是找一个可以在这三端都能访问到的位置,这个文件夹在 Rime 中叫做 sync_dir,需要在每台设备上设置为同一个路径。每次同步用户数据之后,这个文件夹里面对应你设备 installation_id 的子文件夹里就会生成一个 <schema-ID>.userdb.txt 文件,这个文件就是用户词典的快照,包含了用户输入习惯的记录。
Rime 同步功能会自动识别,并双向合并同步这些用户词典文件。
这个 sync_dir 文件夹可以放在任何你想放的位置,只要三台设备都能访问到就行了。常见的做法是放在第三方云盘的同步文件夹里,比如 iCloud Drive, Dropbox, 或者 NAS 等,这样就可以通过云盘的同步功能来实现 Rime 同步。
同步文件夹不会占用太多存储空间,大概二三十兆。不必担心会占用太多 iCloud 云盘空间。
配置同步文件夹
修改 ~/Library/Rime/installation.yaml 文件:
installation_id: "MBP16" # 同步时会创建文件夹,保存到 RimeSync 目录中
sync_dir: "~/Library/Mobile Documents/com~apple~CloudDocs/Documents/config_files/RimeSync" # 多个设备保存的共同目录,此处为 iCloud 路径
我的同步文件夹结构如下:
$HOME/Library/Mobile Documents/com~apple~CloudDocs/Documents/config_files/RimeSync
├── iPhone
├── MBP14
└── MBP16
对应我的三台设备: iPhone, MBP14, MBP16。
-
设置
installation_id来区分来自不同的机器/系统的用户词典 (设备ID),会自动生成这个id值为文件夹的名字。Rime 会随机生成一个 UUID 作为标识,但是不便于记忆和区分不同设备。用户可以自行设置一个易记的名字。
这里我定义文件夹名字为
MBP16,可根据偏好修改为任意文件名。 -
设置
sync_dir为多设备下统一保存路径。此处我定义为 iCloud 下的
Documents/config_files/RimeSync文件夹。← 所有设备的sync_dir都要设置为这个路径。iCloud Drive 的路径为
~/Library/Mobile Documents/com~apple~CloudDocs/。 -
配置后点击菜单栏 Squirrel >「同步用户数据」即可备份配置和输入习惯。
要求磁盘文件的 Access Permission > 同意即可。
-
此时你可以去
sync_dir目录下查看,里面会生成一个以installation_id命名的文件夹,里面包含用户词典 (<schema-ID>.userdb/) 和配置文件的快照 (<schema-ID>.userdb.txt)。
至此,Rime 同步功能就配置好了。你在其中一台设备上输入过的内容会自动同步到其他设备上,保持输入习惯的一致性。
注意: custom_phrase.txt 里面的自定义词库内容不支持自动同步,需要手动复制粘贴到其他设备的用户文件夹中。
示例2: 使用 Dropbox 同步
比如设置 sync_dir: 'D:\Dropbox\RimeSync'。
与安装在其他系统上的 Rime 同步后,同步文件夹呈如下布局:
D:\Dropbox\RimeSync\id-xxx\luna_pinyin.userdb.txt
D:\Dropbox\RimeSync\id-xxx\terra_pinyin.userdb.txt
D:\Dropbox\RimeSync\id-xxx\installation.yaml
D:\Dropbox\RimeSync\id-xxx\default.custom.yaml
D:\Dropbox\RimeSync\id-xxx\weasel.custom.yaml
D:\Dropbox\RimeSync\id-yyy\terra_pinyin.userdb.txt
D:\Dropbox\RimeSync\id-yyy\installation.yaml
D:\Dropbox\RimeSync\id-yyy\default.custom.yaml
D:\Dropbox\RimeSync\id-yyy\squirrel.custom.yaml
D:\Dropbox\RimeSync\id-zzz\luna_pinyin.userdb.txt
D:\Dropbox\RimeSync\id-zzz\installation.yaml
D:\Dropbox\RimeSync\id-zzz\alternative.yaml
D:\Dropbox\RimeSync\id-zzz\luna_pinyin.custom.yaml
id-xxx, id-yyy, id-zzz 分别为不同设备的 installation_id。
同步功能原理:
同步时,依次将各子文件夹中的词典快照 (
*.userdb.txt) 合并到用户词典,最后为合并后的用户词典生成一份新的快照文件。另外,还会把用户文件夹中非自动生成的
.yaml文件及.txt文件单向备份到同步文件夹。
-
用户词典双向
举例来说,甲电脑个人词典累积了词汇 ABC,乙电脑累积了词汇 DEF,那么,通过第三方云同步和 Rime 同步后,个人词典词汇会双向同步合并为 ABCDEF。
-
个人配置单向
-
是指将配置文件,单向地从「用户文件夹」同步进入「同步文件夹」。这也是为了保持配置的一致性的必须方案。因为,若这两个文件夹中的配置不一致时,必然产生混乱。因而必须由用户手动。
-
也就是说,同步主要针对的是词库,配置文件只算是备份了一下。
如需同步配置文件,如
*.custom.yaml,需要手动复制粘贴,最好按照更新时间定期复制粘贴一下。
-
在其他设备同步用户数据
-
在其他设备上安装 Rime 输入法,并配置
installation.yaml文件,确保sync_dir与之前的设备一致。installation_id可以设置为不同的名字,以区分不同设备的用户数据。 -
点击菜单栏「同步用户数据」,即可将之前设备的用户数据同步到当前设备。
同步到 iPhone
目前在 「仓输入法」中,有两个不同的同步功能:「RIME 同步」和「iCloud 同步」。
-
RIME 引擎的同步功能,主要是同步不同设备的词库文件 (当然也包含一些配置文件)。→ 设备间词库同步用 ✅
注意 RIME 同步功能只支持 「userdb」 类型(二进制格式)的词库。如果词库格式为 「tabledb」 格式(文本格式),则 RIME 同步功能无法支持。
如何查看自己的输入方案是哪种格式? 在输入方案的
*.schema.yaml文件中,查找db_class参数。若输入方案的
db_class是tabledb或者stabledb, 参考这里,修改为userdb,即可使用 RIME 同步功能。 -
iCloud 同步使用的是苹果的文件同步功能,主要是将文件同步到云端。→ 备份用
电脑端用户输入方案的配置 db_class: userdb
如果你的输入方案 db_class 为 userdb,Deploy (部署) > Sync user data (同步用户数据) 后,在同步文件夹 (<sync_dir>) 中会产生 rime_ice.userdb.txt 格式的词库文件。
此文件为人类可读的 .txt 文本文件,对应用户词典文件夹$HOME/Library/Rime/rime_ice.userdb/ 里的二进制文件。
<schema_id>.userdb.txt 包含了用户的输入习惯和词库数据,会被 RIME 同步功能自动同步到其他设备上,确保在不同设备上使用相同的输入习惯和词库数据。
iPhone 「仓输入法」 中 RIME 同步功能的设置步骤
-
打开 Hamster app > RIME
-
修改「同步文件夹名称」为
iPhone此处填写设备名,用于用户区分不同设备。
会在
sync_dir下创建一个以此命名的子文件夹。 -
修改「同步路径」为
<sync_dir>。点击 “选择同步路径”,iPhone 会打开文件选择界面,选择之前设置的 iCloud 同步文件夹
<sync_dir>。<sync_dir>是之前设置的所有设备共享的母同步文件夹。这样设置后,RIME 同步时会将词库文件同步到
<sync_dir>/iPhone文件夹下。确认设置成功: 进入「输入方案」>「文件管理」功能,点击标签 「应用文件」,Rime 目录下的
installation.yaml文件中sync_dir字段的值应该是<sync_dir>的路径,例如:installation_id: iPhone sync_dir: "/private/var/mobile/Library/Mobile Documents/com~apple~CloudDocs/Documents/config_files/RimeSync/"点击 “RIME 同步” 按钮,应显示 “RIME 同步中,请稍候…” 的提示,之后会显示 “同步成功” 的提示。
同步成功后,在「仓输入法」中,「输入方案」>「文件管理」>「应用文件」会看到
rime_ice_userdb/文件夹,里面有二进制文件,这些文件就是用户词典文件,包含了用户的输入习惯和词库数据。并在同步目录(
<sync-dir>/<installation_id>)下生成rime_ice.userdb.txt,里面都是输入过的内容。当你同步用户数据时,
rime_ice.userdb.txt会被 RIME 同步功能自动合并同步到其他设备上,确保在不同设备上使用相同的输入习惯和词库数据。
错误示例
上面设置的
sync_dir是 iCloud 同步的路径,但是按 RIME 同步,显示如下错误: “无写入权限”同步失败 无写入权限: "/private/var/mobile/Library/Mobile Documents/com~apple~CloudDocs/Documents/config_files/RimeSync"如有以上错误,重新设置路径即可。
再次点击 “RIME 同步” 按钮,如果文件夹路径设置正确,会显示 “RIME 同步中,请稍候…” 的提示,之后会显示 “同步成功” 的提示。
mac > ios: 必须确保 iCloud 下载同步文件夹中的 *.userdb 文件到本地,才能同步到 iPhone 仓输入法进行数据同步操作。可以在 Finder 里打开 iCloud 同步文件夹,手动确认 *.userdb 文件已经下载到本地。可以使用快捷指令自动化下载 iCloud 同步文件夹中的 *.userdb 文件到本地。
快捷指令设置
- iOS 设备打开快捷指令,点击+号新建,点击新建快捷指令,选择重新命名,输入
SyncRimeUserData - 点击添加操作,点击类别/文稿,选择文件夹,点击文件夹进行选择,选到 iCloud云盘/Hamster/RIME/Rime/sync/mac,点击打开
- 继续添加操作(从底部往上滑出菜单),选择打开文件,点击默认App进行选择,选为 文件app。这一步的意义是:文件app 打开文件夹后,你可以查看要同步的文件是否已下载到本地,必要时可以手动点击下载,等到页面显示下载完成后,点击确认进入下一步。这一步的目的在于保证iCloud上的
*.userdb.txt文档下载到本地,以便仓输入法进行数据同步操作 - 继续添加操作(从底部往上滑出菜单),点击右上角的x,点击类别/所有操作,选择显示提醒,用默认的是否继续即可
- 继续添加操作(从底部往上滑出菜单),点击类别/所有操作,选择打开App,点击App进行选择,选为「仓输入法」
- 点击右下角的执行按钮测试,成功后,重新回到快捷指令,点击右上角的完成按钮进行保存
ref:
- @ShawLocke,如何在 Mac 和 iOS 中保持个人词典同步
- @Apus,高效同步,便捷备份:我的 Rime 输入法 Mac 与 i(Pad)OS 多设备使用方案
- @Minja,Rime 词典管理及其自动化
Q: MacBook 上的自定义词好像没有同步到 iPhone 上?两设备用不同 installation_id。
A: 自定义短语文件 custom_phrase.txt。 因为格式为 txt,所以不会自动同步到其他设备。需要手动同步到其他设备的 Rime 用户文件夹下。
Q: 如何手动同步 custom_phrase.txt?
A:
- 打开 Hamster app > Wi-Fi 上传方案。复制粘贴局域网地址到浏览器,
- 打开
Rime文件夹 -
上传
custom_phrase.txt文件。确认覆盖原始文件。浏览器内支持拖拽上传。
- 重新部署方案后生效。
自动化同步用户词典
If you don’t want to manually sync custom_phrase.txt every time, you need to use the userdb type for your input schema, and then use RIME’s built-in synchronization feature to automatically sync the user dictionary <schema-ID>.userdb.txt across devices. Here’s how to set it up:
- 将所有平台的
installation.yaml文件的sync_dir字段设定为同一个目录,比如 iCloud、Dropbox 的目录。 - 在你输入过内容后,配置目录下会生成
<schema-id>.userdb/文件夹,里面是二进制的用户词典。 -
点击「同步用户数据」后,Rime 会和配置目录下的
*.userdb/进行双向更新同步,并在同步目录(<sync_dir>/<installation_id>)下生成的*.userdb.txt,里面都是输入过的用户词典文本。同步使用场景:
- 在 PC1 造词后,点击同步;
- 之后,在 PC2 上点击同步,即可使用在 PC1 的造词。
- 另一手机上使用同文输入法,也是点击同步后,即可以使用 PC1 或 PC2 上的造词。
ref:
- https://uicop.com/post/93#同步
- User Guide: 同步用户数据
- 「仓输入法」使用指南: 词库同步
- Dvel’s Blog, 雾凇拼音: Rime 配置之多设备同步
- Hamster Github Issues: 多台移动设备可以互相同步用户日常使用而生成的词库吗?
- @Joe Hou, 如何跨设备同步词库和配置
iPhone 上使用 Hamster Tips:
- 如果使用震动反馈 + 按键音,必须授予「完全访问权限」。
- 目前发现的 bug: iMessage 里 quote 文字回复时,无法使用 Rime 中文输入法,一直默认英文。需要换输入法才可以。
雾凇拼音
GitHub repo: https://github.com/iDvel/rime-ice
安装
可以使用 /plum/ ℞ 配方管理工具,一行命令就能安装和更新雾凇拼音:
bash rime-install iDvel/rime-ice
配置文件
.
├── default.yaml # 一些全局设置
├── rime_ice.schema.yaml # 全拼方案
├── double_pinyin*.yaml # 双拼方案
├── rime_ice.dict.yaml # 挂载词库
├── cn_dicts/ # 词库目录
├── melt_eng.schema.yaml # 英文方案,作为次翻译器挂载到拼音方案
├── melt_eng.dict.yaml # 挂载词库
├── en_dicts/ # 词库目录
├── radical_pinyin.schema.yaml # 部件拆字方案,作为反查挂载到拼音方案
├── radical_pinyin.dict.yaml # 部件拆字词库
├── custom_phrase.txt # 自定义短语
├── symbols_v.yaml # 全拼 v 模式
├── symbols_caps_v.yaml # 双拼 V 模式
├── opencc/ # 词语映射,Emoji
├── lua/ # 各个 Lua 脚本
├── squirrel.yaml # 鼠须管的前端配置文件, Mac 端使用
└── weasel.yaml # 小狼毫的前端配置文件, Windows 端使用
输入英文
雾凇拼音已经内置了 melt_eng 翻译器,支持中英文混输。
配置文件默认如下
# rime_ice.schema.yaml
schema:
dependencies:
- melt_eng
engine:
translators:
- table_translator@melt_eng
# 主翻译器,拼音
translator:
dictionary: rime_ice
initial_quality: 1.1 # 拼音权重 1.1
# 次翻译器,英文
melt_eng:
dictionary: melt_eng # 挂载词库 melt_eng.dict.yaml
enable_sentence: false # 禁止造句
enable_user_dict: false # 禁用用户词典
initial_quality: 1.2 # 初始权重大于拼音,数值越大,英文越靠前
comment_format: # 自定义提示码
- xform/.*// # 清空提示码
# 自定义短语: custom_phrase.txt
custom_phrase:
dictionary: ""
user_dict: custom_phrase # 可以修改这里,改成自己的 txt 文件
db_class: stabledb # 只读数据库,无法动态调频;设为 tabledb 可以动态调频
enable_completion: false # 补全提示
enable_sentence: false # 禁止造句
initial_quality: 99 # custom_phrase 的权重应该比 pinyin 和 melt_eng 大
因为平时英文输入较多,我对初始权重做了微调。
默认是 rime_ice:melt_eng 为 1.2:1.1,我调换了一下权重,rime_ice:melt_eng 为 1.1:1.2,让英文候选词更靠前一些。
自定义短语权重最高。
基础使用
-
Symbols 特殊符号、字符输入:
v+ 拼音首字母缩写# rime_ice.schema.yaml punctuator: symbols: __include: symbols_v:/symbols # 从 symbols_v.yaml 导入配置Rime 的预设配置是以
/前缀开头输出一系列字符,自定义的symbols_v.yaml修改成了v开头。比如
vszq会显示数字圈 ⓪, ①, ②, ③, ④, ⑤, …vzmq会显示字母圈 ⓐ, ⓑ, ⓒ, ⓓ, ⓔ, …vzmh会显示字母弧 ⒜, ⒝, ⒞, ⒟, ⒠, …
具体定义见
symbols_v.yaml。除了
v模式,还有一个V模式,输入方式同上,区别在于V模式会输出大写的特殊符号,定义见symbols_caps_v.yaml。V+全拼,也可以显示 emoji 表情。具体定义见opencc/others.txt,配置见rime_ice_dict.yaml。 比如V花会显示 🌸 🌺 🌼 🌻 🌷 … -
Unicode:大写
U开头,如U62fc得到「拼」。 -
数字、金额大写:大写
R开头,如R1234得到「一千二百三十四、壹仟贰佰叁拾肆元整」。 -
以词定字
有时候你想输入一个单字,但这个字的拼音和其他字一样,这时候可以先输入这个字所在的词语,用
[和]选择开头或者结尾的字。例如,输入nihao,[选择 “你”,]选择 “好”。快捷键写在了
default.yaml。↩
FAQ
Q: 输入法为什么显示繁体?
A: 用 Ctrl + ` 或者 F4 切换输入方式。首先选择一级输入法 (如明月拼音,五笔等),进入二级菜单可选择简体繁体的切换。
Q: 如何切换全半角?
A: Ctrl + `.
Q: 如何切换中英文?
A: 初始设置 Shift 键切换中英文。→ Control+Shift+2
Q: 如何使 Rime 只负责中文,英文用系统自带的?
A: 前往 System Settings > Keyboard > Input Sources,删除 Rime 以外的输入法。之后就只剩下【鼠须管】/【Squirrel】和 【ABC】输入法了。
Q: 输入词语之后,想单独选字,如何操作?
A: 使用左右方向键移动光标,移到想要选择的字的位置,就会出现对应的单字候选。Tab 键可以切换到下一个字的拼音; Shift + Tab 切换到上一个字的拼音。

Q: 如何让括号使用半角符号?
A: 修改 <sheme-ID>.custom.yaml 文件中的 punctuator 字段,例如:
patch:
punctuator/full_shape: # 半角标点
"(" : (
")" : )
punctuator/half_shape: # 半角标点
"(" : "("
")" : ")"
语法说明见上文。
语法要点:
- 如果想要一对多符号映射,可以用
[]括起来。 - 如果想要循环输入成对符号,可以用
pair定义。
ref:
Q: Cannot find rime-install,错误如下
bash rime-install plum
bash: rime-install: No such file or directory
A: rime-install 不在当前目录,cd 到 plum 目录下再执行。
cd ~/plum
bash rime-install plum
或者添加环境变量
export PATH="$PATH:/Users/menghan/plum"
Q: 如何设置模糊音?
A: 修改 luna_pinyin.custom.yaml 文件中的 patch/speller/algebra 字段,重新部署后生效。例如:
patch:
speller/algebra:
- erase/^xx$/ # 第一行保留
# 韵母部份 纠正前后鼻音不分
- derive/^([bpmf])eng$/$1ong/ # meng = mong, ...
- derive/([ei])n$/$1ng/ # en => eng, in => ing
- derive/([ei])ng$/$1n/ # eng => en, ing => in
# 自动纠正一些常见的按键错误
- derive/([aeiou])ng$/$1gn/ # dagn => dang
- derive/([dtngkhrzcs])o(u|ng)$/$1o/ # zho => zhong|zhou
- derive/ong$/on/ # zhonguo => zhong guo
- derive/ao$/oa/ # hoa => hao
- derive/([iu])a(o|ng?)$/a$1$2/ # tain => tian
更多例子见 lotem/luna_pinyin.schema.yaml gist.
Q: 如何实中英混输?
A: 「MacOS 上 easy-en 目前自动配置失效不可用,必须手动添加 dependencies」操作见下文手动配置.
Update: Rime-ice 雾凇拼音已经内置了 melt_eng 翻译器。↩
melt_eng 和 easy_en 差不多,在拼写规则的大小写方面有所差异。
如果想要中英混输效果,将 rime-easy-en 作为输入法的扩展,嵌入到具体输入法内。
以朙月拼音(luna_pinyin)为例,可执行以下命令:
cd ~/plum
bash rime-install BlindingDark/rime-easy-en:customize:schema=luna_pinyin
Installing for Rime frontend: rime/squirrel
Downloading package: BlindingDark/rime-easy-en
Cloning into '/Users/menghan/plum/package/BlindingDark/easy-en'...
remote: Enumerating objects: 13, done.
remote: Counting objects: 100% (13/13), done.
remote: Compressing objects: 100% (12/12), done.
remote: Total 13 (delta 0), reused 6 (delta 0), pack-reused 0 (from 0)
Receiving objects: 100% (13/13), 4.03 MiB | 8.83 MiB/s, done.
Installing recipe: BlindingDark/rime-easy-en:customize
- option: schema=luna_pinyin
Installing: easy_en.dict.yaml
Installing: easy_en.schema.yaml
Installing: easy_en.yaml
Creating directory: /Users/menghan/Library/Rime/lua
Installing: lua/easy_en.lua
Patching: luna_pinyin.custom.yaml
若想更新到最新版,则重复执行安装命令即可。
目前暂时解决方案为直接在 luna_pinyin.schema.yaml 中配置。
缺点为更新 luna_pinyin.schema.yaml 时,会覆盖掉 easy_en 的配置。
# luna_pinyin.schema.yaml 中关于 easy_en 的配置
schema:
dependencies:
- easy_en
engine:
translators:
- table_translator@easy_en
# 英文翻译器
easy_en:
dictionary: easy_en
enable_sentence: false # 禁止在 luna_pinyin 中显示不在词典中的英文单词;禁止造句功能
split_sentence: false # 关闭连续输入增强的分词功能;功能太卡
在 luna_pinyin.custom.yaml 中添加如下字段:
# luna_pinyin.custom.yaml 中关于 easy_en 的配置
patch:
__include: easy_en:/patch # 英文辅助输入
[✓] To-do: 将配置融入到 luna_pinyin.custom.yaml 中。语法参考↩︎
「更新」: 如何在 luna_pinyin.custom.yaml 中添加 easy_en 的配置?
在 custom.yaml 文件中做修改的好处是不用每次更新 luna_pinyin.schema.yaml 都要重新配置 easy_en。
👍 在 luna_pinyin.custom.yaml 中添加以下字段 (all-in-one solution):
patch:
schema/dependencies/@after 0: easy_en # 添加英文输入法
engine/translators/@after last: table_translator@easy_en # 添加英文翻译器;放在列表最后
# 英文翻译器配置
easy_en:
dictionary: easy_en
enable_sentence: false # 禁止在 luna_pinyin 中显示不在词典中的英文单词;禁止造句功能
split_sentence: false # 关闭连续输入增强的分词功能;功能太卡
initial_quality: 0 # 英文词库词频调高,数值越大,英文越靠前
权重设置规则不是很清楚。在 rime-ice 的配置文件中, melt_eng (次翻译器) 的 initial_quality 设置为 1.1, rime_ice (主翻译器) 的 initial_quality 设置为 1.2. ↩
ref:
Q: 如何去除的多余的输入方案配置文件? 有许多未使用的输入方案的配置文件、替身,我并未在 default.custom.yaml 中开启这些方案,对我来说,他们不但没有什么用,而且还影响了快速地找到使用中的输入方案配置文件。所以怎么操作,才能去掉这些无用的配置文件?↩
我的 default.custom.yaml 只保留了 luna_pinyin 和 rime_ice 两个输入方案
patch:
schema_list:
# 添加输入法
- schema: luna_pinyin # 明月拼音
- schema: rime_ice # 雾凇拼音
A: 多余的那些是安装时默认启用的输入方案及词典文件。手动删除就好。注意不要删除 dependencies,如 easy_en 等。不确定的就不要删除。一般输入方案有以下文件 <schema-ID>_<version>.schema.yaml、<schema-ID>.dict.yaml。
比如倉頡輸入法的配置文件如下
~/Library/Rime
├── cangjie5_express.schema.yaml
├── cangjie5.schema.yaml
└── cangjie5.dict.yaml
双拼也可以删除. Double Pinyin (ZiRanMa, ABC, flyPY, MSPY, PYJJ variants)
Miscellaneous
-
既版本 1.0.1 后,不再支持
style/horizontal和style/vertical(原本用于设置候选词框的排列方式,在~/Rime/squirrel.custom.yaml中配置)在新版本中,横排支持改成
candidate_list_layout: linear。↩︎ -
具体见上文模糊音配置
-
emoji 映射
此功能在 MacOS 有快捷键直接调用 emoji 面板,但是需要鼠标选择,还是有点麻烦。 iPhone 更麻烦,需要切换到 emoji 键盘。
可以安装 rime-emoji 仓库。
雾凇拼音已经内置了 emoji 词库。不用自己设置,打文字,备选框会出现 emoji 选项。
# rime_ice.schema.yaml 默认配置文件中关于 emoji 的配置 # Emoji emoji: option_name: emoji # 对应 switches 中的 name opencc_config: emoji.json # 选择要加载的 OpenCC 配置 inherit_comment: false # 在 corrector.lua 及反查中,emoji 的 comment 显示为空Rime-ice 的 emoji 映射是通过 OpenCC (Open Chinese Convert) 配置文件实现的。最初用在简体中文和繁体中文之间进行转换。 但也可以用来实现文字到 emoji 的映射。通过编辑 OpenCC 配置文件,可以定义特定的文字对应的 emoji。
OpenCC 配置文件通常位于
~/Library/Rime/opencc/目录下:. ├── emoji.json ├── emoji.txt └── others.txt-
emoji.txt该文件中包含 emoji 词库。如果想要添加自定义 emoji,可以编辑该文件,添加新的 emoji 词条。
-
emoji.json该文件包含 emoji 表情的映射规则。OpenCC会根据这个 json 文件进行 emoji 的转换。这个文件不用改。
-
others.txt该文件包含一些特殊词汇表的形式,还有 emoji 表情的映射规则。emoji 映射规则:
V+ 全拼,显示 emoji 表情。比如V花会显示 🌸 🌺 🌼 🌻 🌷 …
注意 Syntax 与
custom_phrase.txt不同,emoji.txt的语法如下:# 每行一个词条,格式为:emoji_name <Tab> emoji_character1 <Space> emoji_character2 ... 摄氏度→ 摄氏度␣ °C 足球→ 足球␣ ⚽ 笑→ 笑␣ 😄␣ 😊 -
高阶功能
有需要再配置
- Rime 的 Lua 接口说明:hchunhui/librime-lua/wiki/Scripting
Tutorials:
- @减三和弦,在 macOS 上配置中州韵输入法
- 雾凇拼音 https://b23.tv/rQD1woH
- 博客园 https://www.cnblogs.com/vimmer/articles/3003051.html
- @Luwang, 个人输入法调教之 Rime
- Rime List & Docs (资料汇集但是有错码): https://hantang.github.io/rime-docs/en/
微信输入法
非常智障 下载两次 使用后卸载 有严重 bug 无法选词 避雷!
卸载
- Go to
/Library/Input Methods - Delete
WeType.app
如果提示 “文件正在使用中,无法删除”: Open Activity Monitor, find the process named WeType, select it and click the “X” button in the top left corner to quit it. Then try deleting the app again.