前言
Rime 是一款开源的、跨平台的输入法框架,它高度可定制,用户几乎可以修改输入法的每一个细节。Rime 的自由度非常高,基本可以满足你对一款输入法需求的任何细节的定制和修改。如果你想掌握和了解 Rime 的每一个细节,那么本篇教程可不能并不适用,阅读官网的文档是更好的选择 Rime 帮助指南。如果你只是想简单的了解并上手 Rime,我强烈的建议你继续阅读本篇文章,它围绕普通用户对于一款输入法的几个核心需求进行展开
专属方案(schema)制作
自定义词库
自定义快捷键
符号 / Emoji 支持与覆写
基于 Lua 脚本的高级扩展(如: 输出当前时间)
跨平台的「配置同步」和「用户词典同步」
主题美化
另外,我想要先说明一下,在客制化的过程中,我不想一股脑介绍太多概念和罗列出所有可能的配置项,那样只会劝退想要入门的朋友。我只会从需求出发,引入需要涉及的概念。除特殊说明,本文所有客制化选项都是可选的。
补充说明: 本文基于 Rime v0.17.4 版本进行撰写
安装
Rime 支持 Windows / MacOS / Linux 多种平台,可以在这里进行下载: Rime 官网
目录结构
从大的方面,Rime 可以分为三个主要目录
安装目录
用户目录(保存用户的客制化配置)
同步目录(用来同步用户词典,让不同平台的 Rime 同步你的输入习惯)
默认情况下,「用户目录」、「同步目录」软件都有内置的默认保存位置,不过我建议你进行一些调整,最好设置为三个独立的文件夹,不要进行嵌套,我的目录结构如下
D:\Rime (Rime 安装目录)
D:\RimeConfig (Rime 用户配置目录)
D:\RimeSync (Rime 同步目录)
调整用户目录
以 Windows 平台为例,在你的 Rime 安装目录下,有一个名为 WeaselSetup.exe ,双击运行,进行用户目录的调整。
调整完毕后,在任务栏右下角「输入法托盘图标 - 右键 - 重新部署」,以让配置生效。


调整同步目录
在「用户目录」下有一个 installation.yaml ,新建一项: sync_dir 的配置项,里面写你的同步目录。
installation_id, 默认情况下是个自动生成的 uuid,我建议你改成对自己当前设备的标注,方便不同设备进行数据同步的时候区分。
需要注意的是,
sync_dir设定的目录最好使用绝对目录,且不要忘记了转义符,D:\RimeSync,这样写是不对的。如果你发现重新部署后,配置并没有生效且重新生成了一份installation.yaml,大概率是你的sync_dir设置的有问题。
正常情况下,修改后的 installation.yaml 应该长这个样
# 用户目录/installation.yaml
distribution_code_name: Weasel
distribution_name: "小狼毫"
distribution_version: 0.17.4
install_time: "Wed Oct 15 11:16:55 2025"
installation_id: "home_windows"
rime_version: 1.13.1
sync_dir: "D:\\RimeSync"测试同步目录是否生效: 「输入法托盘图标 - 右键 - 用户资料同步」,正常情况下在你设置的同步目录,你应该能发现多了一些文件。
全局配置
首先,在「用户目录」你会看到一个 default.custom.yaml (如果没有就新建一个),这是一切的客制化的入口。【必需】
另外,除非单独声明,所有配置的调整,都需要在调整后,对 Rime 使用「重新部署」来让配置生效。
设置使用的方案
方案(schema),你可以理解为一整套关于输入法的配置组合,它定义了输入法的所有表现行为。你的 Rime 可以同时启用(enable)多套方案,比如: 五笔方案、拼音方案1、拼音方案2、双拼方案等,但是同一时间你只能使用(use)一种方案。
我们后续要客制化出一套专属于自己的方案,所以这里先提前写入 my_custom
# 用户目录/default.custom.yaml
patch:
schema_list:
- {schema: my_custom}
# - {schema: luna_pinyin_simp} # 你可以启用多种方案调整方案切换快捷键
默认情况下,你可以随时按下 F4 和 Control+grave (windwos下就是: ctrl+`),来进行方案的切换选择,但是你可以修改这个快捷键!
# 用户目录/default.custom.yaml
patch:
menu:
page_size: 9
switcher:
hotkeys:
- Control+grave: noop # 关闭 Control+grave 切换方案
- F4: noop # 关闭 F4 切换方案
- F3 # 设置 F3 进行切换方案调整候选词数量
正常情况下,你打字的时候,Rime 每页默认显示 5 个候选词,你可以简单的通过一行配置调整这个数量
# 用户目录/default.custom.yaml
patch:
menu:
page_size: 9调整翻页/全角、半角快捷键
默认情况下,Rime 定义了很多的快捷键来进行全角、半角的切换,以及选词界面的翻页快捷键。
很多时候我们并不需要这么多快捷键,或者需要某些快捷键做另外的事情。你可以进行下列设置。
# 用户目录/default.custom.yaml
patch:
key_binder:
bindings:
- {accept: "Control+Shift+3", toggle: noop, when: always} # 禁用快捷键
- {accept: "Control+Shift+4", toggle: noop, when: always} # 禁用快捷键
- {accept: "Control+Shift+5", toggle: noop, when: always} # 禁用快捷键
- {accept: minus, send: Page_Up, when: has_menu} # 设置 - 用来向下翻页
- {accept: equal, send: Page_Down, when: has_menu} # 设置 = 用来向上翻页调整中英文的切换
在 Rime 中,中英文的切换,默认有三种模式,你可以按需调整
inline_ascii: 在输入法的临时英文编辑区内输入字母、数字、符号、空格等,回车上屏后自动复位到中文commit_text: 已输入的候选文字上屏并切换至英文输入模式commit_code: 已输入的编码字符上屏并切换至英文输入模式
# 用户目录/default.custom.yaml
patch:
ascii_composer:
switch_key:
Caps_Lock: noop
Shift_L: commit_code
Control_L: clear # 清楚定制专属方案
在「用户目录」新建一个 my_custom.schema.yaml 文件。
如果你在「设置使用的方案」章节,设置了其他的名字,文件名做对应修改
# 用户目录/my_custom.schema.yaml
schema:
schema_id: my_custom
name: 朙月拼音·简化字·客制版
version: "1.0"
author:
- Cane
description: |
在 【朙月拼音·简化字】 版本的基础上,进行客制化。
__include: luna_pinyin_simp.schema:/我们选择在 luna_pinyin_simp 方案的基础上进行二次开发,luna_pinyin_simp,是 Rime 官方自带的,简体拼音输入方案。
自定义词库
在我们的专属方案上扩展使用更多的词库,比如一些计算机术语词库、搜狗常用词等。
我的建议是,专属方案引用一个 my_custom.dict.yaml 的词库作为入口,而这个 my_custom 词库,则负责具体导入所有其他词库。
具体步骤
在「用户目录」新建一个 dicts 文件夹,用来存放我们收集到的词库 (可以直接从互联网搜索,一般情况下,他们的文件名应该是:
xxxx.dict.txt)修改
my_custom.schema.yaml,使用我们的词库文件# 用户目录/my_custom.schema.yaml schema: schema_id: my_custom name: 朙月拼音·简化字·客制版 version: "1.0" author: - Cane description: | 在 【朙月拼音·简化字】 版本的基础上,进行客制化。 __include: luna_pinyin_simp.schema:/ __patch: translator/dictionary: my_custom在「用户目录」新建
my_custom.dict.yaml文件,并导入我们收集到的词库# 用户目录/my_custom.dict.yaml --- name: my_custom version: "1.0" sort: by_weight use_preset_vocabulary: true import_tables: - luna_pinyin # Rime 官方自带的拼音方案词库,不需要放在 dicts 文件夹 - dicts/sougou_standard # 互联网收集到的搜狗输入法常规词库 - dicts/sougou_computer # 互联网收集到的搜狗输入法计算机术语词库重新部署,现在你的新词库应该已经可以成功使用了
用户词典
自定义一些自己的专属短语,比如 uuuu -> 又双叒叕,hi -> hicane,这个时候可以使用用户词典来实现。
修改
my_custom.schema.yaml,在engine/translators里面新增table_translator@custom_phrase,并指定词典位置# 用户目录/my_custom.schema.yaml schema: schema_id: my_custom name: 朙月拼音·简化字·客制版 version: "1.0" author: - Cane description: | 在 【朙月拼音·简化字】 版本的基础上,进行客制化。 __include: luna_pinyin_simp.schema:/ __patch: translator/dictionary: my_custom punctuator: import_preset: dicts/symbols engine/translators: - punct_translator - table_translator@custom_phrase - lua_translator@*date_translator - lua_translator@*lunar_translator - script_translator custom_phrase: db_class: stabledb dictionary: "" enable_completion: false enable_sentence: false initial_quality: 99 user_dict: dicts/custom_phrase在用户词典里,按照 「词汇<Tab>编码<Tab>权重」的顺序每行写一个短语(权重可以省略)
# Rime table # coding: utf-8 #@/db_name custom_phrase.txt #@/db_type tabledb # 用户自定义词典 # 可为方案增加一些要置顶的词汇及短语,例如邮箱、手机号、常用短语等等。编码可以随便起,不限于拼音。 # # 以 Tab 分割:词汇<Tab>编码<Tab>权重 # # 此行之后不能写注释 又双叒叕 uuuu hicane hi 99
自定义符号
修改一些符号键的映射,比如将半角输入时的 {键修改为: 「 ,或者给我们的输入法添加一些 emoji。
同样的我建议你在 dicts 文件夹下面新建一个 symbols.yaml 文件,用来方便统一管理。
修改
my_custom.schema.yaml# 用户目录/my_custom.schema.yaml schema: schema_id: my_custom name: 朙月拼音·简化字·客制版 version: "1.0" author: - Cane description: | 在 【朙月拼音·简化字】 版本的基础上,进行客制化。 __include: luna_pinyin_simp.schema:/ __patch: translator/dictionary: my_custom punctuator: import_preset: dicts/symbols engine/translators: - punct_translator - table_translator@custom_phrase - lua_translator@*date_translator - lua_translator@*lunar_translator - script_translator新建并修改
用户目录/dicts/symbols.yaml# 用户目录/dicts/symbols.yaml punctuator: full_shape: '\' : '、' '/' : '/' '*' : '*' '~' : '~' '$' : '$' '%' : '%' '^' : '^' '`' : '・' '<' : '《' '[' : '【' ']' : '】' '|' : '|' ':' : ':' half_shape: '\' : '、' '/' : '/' '*' : '*' '~' : '~' '$' : '¥' '%' : '%' '^' : '^' '`' : '`' '<' : '《' '>' : '》' '[' : '【' ']' : '】' '{' : '「' '}' : '」' '|' : '|' '#' : { commit: '#' } '@' : { commit: '@' } ',' : ',' '.' : '。' '(' : '(' ')' : ')' '!' : '!' '?' : '?' symbols: '/dui': [✓,✔️,✅,☑️] '/cuo': [✗,✖️,❎,❌] '/wen': [❓,⁉️,❔] '/ok': [👌,👌🏻] '/nb': [👍] '/nan': [♂] '/nv': [♀] '/shang': [↑] '/xia': [↓] '/zuo': [←] '/you': [→]
重新部署后,你应该可以通过 / 唤出 emoji 了。不过我更喜欢用 i 开头的字母来唤出,比如 idui -> [✓,✔️,✅,☑️],那么可以做以下调整。
# 用户目录/my_custom.schema.yaml
schema:
schema_id: my_custom
name: 朙月拼音·简化字·客制版
version: "1.0"
author:
- Cane
description: |
在 【朙月拼音·简化字】 版本的基础上,进行客制化。
__include: luna_pinyin_simp.schema:/
__patch:
translator/dictionary: my_custom
punctuator:
import_preset: dicts/symbols
recognizer/patterns/punct: '^i([0-9]0?|[A-Za-z]+)$'# 用户目录/dicts/symbols.yaml
punctuator:
full_shape:
'\' : '、'
'/' : '/'
'*' : '*'
'~' : '~'
'$' : '$'
'%' : '%'
'^' : '^'
'`' : '・'
'<' : '《'
'[' : '【'
']' : '】'
'|' : '|'
':' : ':'
half_shape:
'\' : '、'
'/' : '/'
'*' : '*'
'~' : '~'
'$' : '¥'
'%' : '%'
'^' : '^'
'`' : '`'
'<' : '《'
'>' : '》'
'[' : '【'
']' : '】'
'{' : '「'
'}' : '」'
'|' : '|'
'#' : { commit: '#' }
'@' : { commit: '@' }
',' : ','
'.' : '。'
'(' : '('
')' : ')'
'!' : '!'
'?' : '?'
symbols:
'idui': [✓,✔️,✅,☑️]
'icuo': [✗,✖️,❎,❌]
'iwen': [❓,⁉️,❔]
'iok': [👌,👌🏻]
'inb': [👍]
'inan': [♂]
'inv': [♀]
'ishang': [↑]
'ixia': [↓]
'izuo': [←]
'iyou': [→]Lua 脚本扩展
我们有时候希望,我们的输入法能实现一些基于脚本逻辑的高级输入,比如敲击 sj 显示当前系统时间,如图所示。

同样的,我建议专门用一个文件夹来管理我们所有的脚本,就如我们上文中用 dicts 管理所有词典一样,以时间转换的功能为例。
下面我们来实现一个基于 Lua 脚本的 "时间日期" 功能扩展
首先在「用户目录」下新建一个名为 lua 的文件夹,里面新建一个
date_translator.lua文件# 用户目录/lua/date_translator.lua local function translator(input, seg) if (input == "sj") then yield(Candidate("time", seg.start, seg._end, os.date("%Y年%m月%d日 %H时%M分%S秒"), "时间")) yield(Candidate("time", seg.start, seg._end, os.date("%Y-%m-%d %H:%M:%S"), "时间")) yield(Candidate("timestamp", seg.start, seg._end, tostring(os.time()), "时间戳")) end if (input == "rq") then yield(Candidate("date", seg.start, seg._end, os.date("%Y年%m月%d日"), "日期")) yield(Candidate("date", seg.start, seg._end, os.date("%Y-%m-%d"), "日期")) end end return translator修改我们的
my_custom.schema.yaml# 用户目录/my_custom.schema.yaml schema: schema_id: my_custom name: 朙月拼音·简化字·客制版 version: "1.0" author: - Cane description: | 在 【朙月拼音·简化字】 版本的基础上,进行客制化。 __include: luna_pinyin_simp.schema:/ __patch: translator/dictionary: my_custom engine/translators: - punct_translator - table_translator@custom_phrase - lua_translator@*date_translator - script_translator punctuator: import_preset: dicts/symbols recognizer/patterns/punct: '^i([0-9]0?|[A-Za-z]+)$'
engine/translators: - punct_translator - table_translator@custom_phrase - lua_translator@*date_translator - script_translator关于上述这个部分,如果你只关心如何实现 lua 脚本,则只需关注
lua_translator@*date_translator, 其他部分照抄就好如果你有更多的脚本只需在
lua_translator@*date_translator下面继续增加即可,如:lua_translator@*website_translator如何你想更深入的了解,可以关注: Rime Transaltor
主题美化
同样的,我一般习惯在 「用户目录」下新建一个 style.yaml 的文件来集中管理和维护配色方案,里面定义了官方的和一些第三方收集的配色方案。
# 用户目录/style.yaml
android:
name: "安卓/Android"
author: "Patricivs <ipatrickmac@me.com>"
text_color: 0xffffff
back_color: 0x99731c
border_color: 0x99731c
label_color: 0xc18835
hilited_text_color: 0x50c4a8
hilited_back_color: 0x99731c
candidate_text_color: 0xffffff
comment_text_color: 0xffffff
hilited_candidate_text_color: 0xffffff
hilited_comment_text_color: 0xffffff
hilited_candidate_back_color: 0x50c4a8
emjk:
name: "知心·青翠"
author: Jack Liu
color_format: rgba
border_color: 0xD0ECE7
back_color: 0xD0ECE7
shadow_color: 0x000000b4
text_color: 0x0B5345
hilited_text_color: 0xFFFFFF
hilited_back_color: 0x0B534599
label_color: 0x0B534599
hilited_candidate_text_color: 0xFFFFFF
hilited_candidate_back_color: 0x0B5345CC
hilited_label_color: 0xCCCCCC
hilited_comment_text_color: 0xCCCCCC
candidate_text_color: 0x0B5345
comment_text_color: 0x0B534599
prevpage_color: 0x0B5345DD
nextpage_color: 0x0B534599 然后修改我们的 weasel.custom.yaml ,这是所有和配色/主题/样式相关的入口文件
# 用户目录/weasel.cutsom.yaml
patch:
preset_color_schemes:
__include: "style.yaml:/"
"style/color_scheme": emjk跨平台配置同步
在「用户目录」下保存的都是你的客制化配置,你可以采用各种方式进行不同平台的配置同步。
「配置同步」和「用户词典同步」是两个概念
「配置同步」是同步你对 Rime 进行的一些客制化配置,比如: 快捷键配置、主题、词库等等
「用户词典同步」是同步你的输入习惯,上文设置的「同步目录」只会进行「用户词典的合并」
当然,「用户目录」下也并不是所有文件和目录都是我们关注的,我采用的是 git 仓库进行管理,同时忽略以下文件,如果你采用手动复制的方案进行「配置同步」,我也建议你忽略下述文件和目录。
# .gitignore
build/
*.userdb/
installation.yaml
user.yaml经过配置,你的「用户目录」应该看起来长这个样子
用户目录
│ default.custom.yaml # 配置入口
│ installation.yaml # 安装信息,可以用来修改 「同步目录」
│ my_custom.dict.yaml # 字库入口
│ my_custom.schema.yaml # 客制化方案
│ user.yaml # Rime 生成,无需关注
│ weasel.custom.yaml # 主题相关
│
├─build/ # 构建目录,无需管理
│
├─my_custom.userdb/ # 用户词典 「数据库文件夹」,不应该手动管理,应该交由 「同步目录来维护」
│
├─dicts/ # 词库和符号映射存放文件夹
│ sougou_computer.dict.yaml
│ sougou_standard.dict.yaml
│ symbols.yaml
│
└─lua/ # lua 脚本存放文件夹
date_translator.lua最终,你真正需要关注的,需要保证在不同平台和设备之前传递的文件/文件夹
用户目录/
default.custom.yaml # 配置入口
my_custom.dict.yaml # 字库入口
my_custom.schema.yaml # 客制化方案
weasel.custom.yaml # 主题相关
dicts/ # 词库和符号映射存放文件夹
lua/ # lua 脚本存放文件夹比较特殊的是 installation.yaml,我建议你每个设备手动设置一次。
跨平台用户词典同步
机制
Rime 用户词典的同步机制是这样的,当你「右键 Rime 托盘 - 用户资料同步」的时候,它会从以下几个位置提取出你的词典进行合并
用户当前的词典数据库 (用户目录/词表名.userdb/)
其他 installation_id 下的词典数据(同步目录/installation_id/词表名.userdb.txt)
合并完成后,会更新自己的词典数据库(用户目录/词表名.userdb/),同时生成一份词典数据到(同步目录/installation_id/词表名.userdb.txt)
这里的用户词典不是指的词库,而是根据你的使用,你对不同词汇的选择产生的词频的权重分配,比如对于同一个输入序列「xt」
对于程序员来说, 「系统」在候选词中的排序会靠前
而对于美工来说, 「修图」的排序会靠前
注: 同名词表才会合并
举例说明
以上文的配置为例,我在 home_windwos 和 home_macos 使用了同一份配置,词库入口为: my_custom.dict.yaml 文件。
我在 home_windows 设备上,设置 installation_id 为 home_windows,设置同步目录为 D:\RimeSync。我在 home_windows 设备点击「用户资料同步」。会在 D:\RimeSyn\home_windows 生成 my_custom.userdb.txt 的用户词表。
我在 home_macos 设备上,设置 installation_id 为 home_macos,设置同步目录为 /home/RimeSync。我在 home_macos 设备点击「用户资料同步」。会在 /home/RimeSync/home_macos 生成 my_custom.userdb.txt 的用户词表。
现在我将MacOS 的 /home/Rime/Sync/home_macos 文件夹整个复制到 windows 的 D:\RimeSync 文件夹,看起来像这样
D:\RimeSync │ ├─home_windwos/ │ ... │ my_custom.dict.txt │ ... ├─home_macos/ │ ... │ my_custom.dict.txt └───...我再次点击 Windows 上的「用户资料同步」,它会将 MacOS 上的输入习惯同步到我的 Windows 设备。
结合坚果云,实现跨设备/平台同步
设置一个坚果云同步目录,比如: 「RimeDictSync」
将所有设备的 installation.yaml 中的
sync_dir(同步目录) 都指向这个「RimeDictSync」如过你还想区分设备,就顺便修改下不同设备上的 installation_id
保证所有设备都使用同样的配置(上文中已经提级)
设备上执行「用户资料同步」就会把其他设备的资料同步过来
评论