前言

Rime 是一款开源的、跨平台的输入法框架,它高度可定制,用户几乎可以修改输入法的每一个细节。Rime 的自由度非常高,基本可以满足你对一款输入法需求的任何细节的定制和修改。如果你想掌握和了解 Rime 的每一个细节,那么本篇教程可不能并不适用,阅读官网的文档是更好的选择 Rime 帮助指南。如果你只是想简单的了解并上手 Rime,我强烈的建议你继续阅读本篇文章,它围绕普通用户对于一款输入法的几个核心需求进行展开

  • 专属方案(schema)制作

  • 自定义词库

  • 自定义快捷键

  • 符号 / Emoji 支持与覆写

  • 基于 Lua 脚本的高级扩展(如: 输出当前时间)

  • 跨平台的「配置同步」和「用户词典同步」

  • 主题美化

另外,我想要先说明一下,在客制化的过程中,我不想一股脑介绍太多概念和罗列出所有可能的配置项,那样只会劝退想要入门的朋友。我只会从需求出发,引入需要涉及的概念。除特殊说明,本文所有客制化选项都是可选的。

补充说明: 本文基于 Rime v0.17.4 版本进行撰写

安装

Rime 支持 Windows / MacOS / Linux 多种平台,可以在这里进行下载: Rime 官网

目录结构

从大的方面,Rime 可以分为三个主要目录

  1. 安装目录

  2. 用户目录(保存用户的客制化配置)

  3. 同步目录(用来同步用户词典,让不同平台的 Rime 同步你的输入习惯)

默认情况下,「用户目录」、「同步目录」软件都有内置的默认保存位置,不过我建议你进行一些调整,最好设置为三个独立的文件夹,不要进行嵌套,我的目录结构如下

D:\Rime (Rime 安装目录)

D:\RimeConfig (Rime 用户配置目录)

D:\RimeSync (Rime 同步目录)

调整用户目录

以 Windows 平台为例,在你的 Rime 安装目录下,有一个名为 WeaselSetup.exe ,双击运行,进行用户目录的调整。

调整完毕后,在任务栏右下角「输入法托盘图标 - 右键 - 重新部署」,以让配置生效。

rime-user-dir-adjust.png

rime-redeploy.png

调整同步目录

在「用户目录」下有一个 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 中,中英文的切换,默认有三种模式,你可以按需调整

  1. inline_ascii: 在输入法的临时英文编辑区内输入字母、数字、符号、空格等,回车上屏后自动复位到中文

  2. commit_text: 已输入的候选文字上屏并切换至英文输入模式

  3. 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 词库,则负责具体导入所有其他词库。

具体步骤

  1. 在「用户目录」新建一个 dicts 文件夹,用来存放我们收集到的词库 (可以直接从互联网搜索,一般情况下,他们的文件名应该是: xxxx.dict.txt)

  2. 修改 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
  3. 在「用户目录」新建 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  # 互联网收集到的搜狗输入法计算机术语词库
    
  4. 重新部署,现在你的新词库应该已经可以成功使用了

用户词典

自定义一些自己的专属短语,比如 uuuu -> 又双叒叕,hi -> hicane,这个时候可以使用用户词典来实现。

  1. 修改 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
    
  2. 在用户词典里,按照 「词汇<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 文件,用来方便统一管理。

  1. 修改 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
    
    
  2. 新建并修改 用户目录/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 显示当前系统时间,如图所示。

rime-lua.png

同样的,我建议专门用一个文件夹来管理我们所有的脚本,就如我们上文中用 dicts 管理所有词典一样,以时间转换的功能为例。

下面我们来实现一个基于 Lua 脚本的 "时间日期" 功能扩展

  1. 首先在「用户目录」下新建一个名为 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
  2. 修改我们的 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 文件。

  1. 我在 home_windows 设备上,设置 installation_id 为 home_windows,设置同步目录为 D:\RimeSync。我在 home_windows 设备点击「用户资料同步」。会在 D:\RimeSyn\home_windows 生成 my_custom.userdb.txt 的用户词表。

  2. 我在 home_macos 设备上,设置 installation_id 为 home_macos,设置同步目录为 /home/RimeSync。我在 home_macos 设备点击「用户资料同步」。会在 /home/RimeSync/home_macos 生成 my_custom.userdb.txt 的用户词表。

  3. 现在我将MacOS 的 /home/Rime/Sync/home_macos 文件夹整个复制到 windows 的 D:\RimeSync 文件夹,看起来像这样

    D:\RimeSync
    │
    ├─home_windwos/
    │   ...
    │   my_custom.dict.txt
    │   ...
    ├─home_macos/
    │   ...
    │   my_custom.dict.txt
    └───...
    
  4. 我再次点击 Windows 上的「用户资料同步」,它会将 MacOS 上的输入习惯同步到我的 Windows 设备。

结合坚果云,实现跨设备/平台同步

  1. 设置一个坚果云同步目录,比如: 「RimeDictSync」

  2. 将所有设备的 installation.yaml 中的 sync_dir(同步目录) 都指向这个「RimeDictSync」

    如过你还想区分设备,就顺便修改下不同设备上的 installation_id

  3. 保证所有设备都使用同样的配置(上文中已经提级)

  4. 设备上执行「用户资料同步」就会把其他设备的资料同步过来