Rime 输入法

Mac 下名字叫「鼠须管」
Windows 下名字叫「小狼毫」
Linux 下名字叫「中州韵」

App 网站: https://rime.im

更新日志

Q: Why Rime?
A: 一款本地输入法 (没有云端),可以高度自定义,实现众多功能,包括候选框的大小与皮肤,词库与短语等,通过修改本地配置文件,并最终把它打磨成一款完全符合你输入习惯的输入法。[且 Apple 自带输入法非常反中文… 词库蹩脚自不必说,基本也告别了多音字。]

使用下来之后,觉得确实选词更智能,第一候选词正确率很高,基本不需要翻页。

牛逼之处详见知乎: 超全超详细 Rime 中州韵输入法配置指南

Q: 有没有什么缺点呢?
A: 可以说是用细微 bug 换取中文输入法的便捷。VS Code Snippets 好像有点儿问题。中文输入下 autocomplete 不能用 Tab 键选择候选词。

帮助资料


安装 app

  1. 首先进入 Rime 的官网,直接下载安装鼠鬚管的安装包 Squirrel.pkg 并安装。安装完成后,系统会提示退出重新登录。

  2. 然后进入 System Settings -> keyboard -> All Input Sources,点击左下角的 + 号,选择「Chinese, Simplified」,然后选择「鼠鬚管」或者 Squirrel - Simplified,点击「添加」。

  3. 之后就可以在菜单栏的输入法图标中选择「鼠鬚管」作为当前输入法。

快速入门:https://github.com/rime/home/wiki/UserGuide#打字入門


安裝配置器

/plum/ (中文名: 东风破) 是 Rime 输入法下的配置管理工具。

Plum GitHub repo: https://github.com/rime/plum

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)

以上命令行,安装配置管理器及预设配方。


安装输入方案

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

    Syntax: bash rime-install <package-names-or-repo-paths>

  • 如果不想在 plum 目录下执行,可以把 plum 目录添加到环境变量 PATH 中

    例如 export PATH="$PATH:/Users/menghan/plum",然后就可以在任何目录下执行 rime-install 命令了。

  • 若要更新 plum 本身,执行 bash rime-install plum 即可。

# 从 GitHub 安装配方
bash rime-install https://github.com/lotem/rime-forge/raw/master/lotem-packages.conf

# or in short form: "<user>/<repo>/<filepath>"
bash rime-install lotem/rime-forge/lotem-packages.conf

# 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?
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,可以覆盖默认配置。
  • 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:朙月拼音・簡化字輸入方案

输入方案特点

  • 雾凇拼音:专业简体,词库更适配个人习惯;智能自动配置,安装即用;✅

  • 明月拼音:默认繁体比较烦,配置麻烦,需手动修改的地方多;

    Bugs:

    • 使用过程中发现,在打词的过程中,经常会丢一个字。❌
  • 输入方案列表一览


用户词典

词库是输入法好用的灵魂。Rime 有丰富的词库资源供用户安装。且用户可创建自己的词库,个性化定制输入法。

  • 〔用户词典〕 <词典名>.userdb/<词典名>.userdb.kct
  • 〔用户词典快照〕 <词典名>.userdb.txt<词典名>.userdb.kct.snapshot 见于同步文件夹
  • 新建一个扩充词典文件,如 luna_pinyin.extended.dict.yaml

    Caveat:

    • 不要将英文单词用作拼音词典的编码
    • 不要将简拼用作拼音词典的编码
  • 输入法自定义配置文件中,添加用户词典设定项

词典文件范例 luna_pinyin.extended.dict.yaml

---
name: luna_pinyin.extended #
version: "2025.09.12"
sort: by_weight
use_preset_vocabulary: true

# 在这里导入其他词典
import_tables:
  - luna_pinyin    # 导入原版明月拼音的词典
...

ref:


添加自定义短语

  1. Rime 用户文件夹下,新建 ~/Library/Rime/custom_phrase.txt

    输入内容,每行由这些组成: 文字短语权重 (决定重码的次序、可选),它们之间使用 Tab 制表符分隔,其中权重可以省略

    JavaScript	js
    React	react
    Vue	vue	3
    Vue 3	vue	2
    Vue 2	vue	1
    

    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 字符。

  2. 载入词库以启用自定义短语。

    这个文件编辑完成之后就可以到输入具体方案文件(<scheme-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 列表中的第二个元素。

    如果不确定,可查阅具体的输入方案文件,找到 engine/translators 列表,确认一下翻译器顺序。

    比如 luna_pinyin.schema.yaml 里面的 engine/translators 列表如下:

    用户自定义词典翻译器是在第二个位置 (@2),@1 是拼音翻译器,@3 是反查翻译器。

    Q: 啥是翻译器?
    A: 简而言之,翻译器完成由内部编码到文字的翻译。↩︎

    更多关于翻译器

    engine:
      translators:
        - punct_translator               # 标点符号翻译器
        - table_translator@custom_phrase # 用户自定义词典,拉丁字母翻译器
        - reverse_lookup_translator      # 反向查询翻译器
        - script_translator              # 罗马字母翻译器
    

    保存重新部署之后,输入相应的短语就可以显示相应内容了,例如

    rime 用户词典.png

    菜单栏 Squirrel >「同步用户数据」后,用户自定义短语即可在其他设备上使用。


用户自定义词典设定项

以下解释自定义词典常用字段的含义:

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     # 是否开启用户词典,以记录动态字频和用户词词频

ref:


Rime 配置文件目录

参考资料


💡Main Takeaways:

  • 用户配置文件目录 /Users/<user-name>/Library/Rime/

  • 注意修改配置后需要重新部署输入法。

    如果担心之后的配置出了问题找不到,可以每一步都重新部署一次,确保代码没有出现问题。

  • *.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 的修改会影响所有输入方案。

  • 如果只想影响某个输入方案,可以修改对应的 <scheme-ID>.custom.yaml 文件,例如 luna_pinyin.custom.yaml

    注意自定义文件名:将默认配置文件名中的 schema 替换为 custom 即可。<scheme-ID>.custom.yaml 优先级高于 <scheme-ID>.schema.yaml,可以覆盖默认配置。


配置文件

默认配置 自定义配置 功能
default.yaml defalut.custom.yaml 全局配置
luna_pinyin.schema.yaml luna_pinyin.custom.yaml 朙月拼音输入方案 (局部配置)

Note:

  1. 局部配置优先级高于全局配置。
  2. <scheme-ID>.custom.yaml 优先级高于 <scheme-ID>.shcema.yaml

常用配置文件

全局配置文件:

  • default.custom.yaml:默认核心配置文件,自定义全局样式。

    比如可设置候选输入法,候选词个数,按键绑定,中英切换等。

  • squirrel.custom.yaml: 修改 rime 的皮肤设置,候选词横排显示,程序默认英文等,定制外观。新建文件,输入你想要的配置项即可。

    squirrel.yaml 配置指南

针对具体输入方案 (schema) 的配置文件:

  • luna_pinyin.schema.yaml 朙月拼音用户短语
  • pinyin_simp.schema.yaml 拼音・简化字主翻译器

Q: 如何修改每页候选词个数?
A: rime 默认的是5个候选词。修改 default.custom.yaml 文件中的 page_size 字段,例如:

patch:
    "menu/page_size": 4

default.custom.yaml

Rime 配置文件

设置

  • 候选输入法:只保留需要的输入法
  • 候选词个数
  • 按键绑定
  • 中英切换

只保留明月拼音和雾凇拼音

默认安装有很多输入方案,可以只保留需要的输入方案,其他的删除掉。

# 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 字段

patch:
  # 添加你想要保留的输入方案
  schema_list:
    - schema: luna_pinyin       # 明月拼音
    - schema: rime_ice          # 雾凇拼音

scheme 名字去 <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:

patch:

  show_notifications_when: appropriate  # 状态通知,适当,也可设为全开(always)全关(never) 
  
  style:
    color_scheme: github # 主题,可选 apathy 等
    
    horizontal: false  # 水平排列 
    inline_preedit: true #单行显示,false双行显示 
    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 #候选字词大小 

    ## 下面是关于输入法窗口外观的特殊设定
    corner_radius: 5  #候选条圆角
    border_height: 6      # 窗口边界高度,大于圆角半径才生效 
    border_width: 6     # 窗口边界宽度,大于圆角半径才生效   
    hilited_corner_radius: 3
    spacing: 2 # 候选词行距 横向 如何理解
    line_spacing: 6
    border_color_width: 5 

color_scheme: github 必须存在于 preset_color_schemes 之中

ref:


横排支持

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 只保留了一个状态「中文」,避免无意间切到英文输入状态。


  • punctuator: 句读处理器,将单个字符按键直接映射为文字符号

    Syntax: punctuator/<full_shape | half_shape>: { "<key>": "<mapped_character>" }

    对应不同状态:

    • full_shape 全角标点,宽度大,占用两个字节;
    • half_shape 半角标点,宽度小,占用一个字节;

    <key> 是按键,<mapped_character> 是映射后的字符,如映射一组字符,用 [] 括起来。

    • 注意 <key> 按键均为半角字符,<mapped_character> 可以是全角或半角字符
    • 个人习惯是用半角,以后只在 half_shape 里设置即可。

  • 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:


同步

修改 ~/Library/Rime/installation.yaml 文件:

installation_id: "MBP16"             # 同步时会创建文件夹,保存到 RimeSync 目录中
sync_dir: "~/Library/Mobile Documents/com~apple~CloudDocs/Documents/config_files/RimeSync"   # 多个设备保存的共同目录
  1. 设置 installation_id 来区分来自不同的机器/系统的用户词典 (设备ID),会自动生成这个 id 值为文件夹的名字。

    Rime 会随机生成一个 UUID 作为标识,但是不便于记忆和区分不同设备。用户可以自行设置一个易记的名字。

    这里我定义文件夹名字为 MBP16,可根据偏好修改为任意文件名。

  2. 设置 sync_dir 为多设备下同一保存路径。

    此处我定义为 iCloud 下的 Computer Setting/config_files/RimeSync 文件夹。

  3. 配置后点击菜单栏 Squirrel >「同步用户数据」即可备份配置和输入习惯。

    要求磁盘文件的 Access Permission > 同意即可。

  4. 此时你可以去 sync_dir 目录下查看,里面会生成一个以 installation_id 命名的文件夹,里面包含用户词典和配置文件的快照。

比如设置 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

PC-1 里点【同步】,通过网盘同步到 PC-2,PC-2 再点同步,才可以获得 PC-1 输入过的内容。

同步功能原理:
同步时,依次将各子文件夹中的词典快照合并到用户词典,最后为合并后的用户词典生成一份新的快照文件。
另外,还会把用户文件夹中非自动生成的 YAML 文件及 .txt 文件单向备份到同步文件夹。

  • 用户词典双向

    举例来说,甲电脑个人词典累积了词汇 ABC,乙电脑累积了词汇 DEF,那么,通过第三方云同步和 Rime 同步后,个人词典词汇会双向同步合并为 ABCDEF。

  • 个人配置单项

    • 是指将配置文件,单向地从「用户文件夹」同步进入「同步文件夹」。这也是为了保持配置的一致性的必须方案。因为,若这两个文件夹中的配置不一致时,必然产生混乱。因而必须由用户手动。
    • 也就是说,同步主要针对的是词库,配置文件只算是备份了一下,需要手动复制粘贴,最好按照更新时间定期复制粘贴一下

ref:

在其他设备同步用户数据

  1. 在其他设备上安装 Rime 输入法,并配置 installation.yaml 文件,确保 installation_idsync_dir 与之前的设备一致。
  2. 点击菜单栏「同步用户数据」,即可将之前设备的用户数据同步到当前设备。

Rime 同步


同步到 iPhone

  1. 打开 Hamster app > RIME
  2. 修改同步路径为之前设置的 sync_dir

    所有设备共享的母同步文件夹

  3. 修改「同步文件夹名称」为 iPhone

    此处填写设备名,用于用户区分不同设备。会在 sync_dir 下创建一个以此命名的子文件夹。

iPhone 上使用 Hamster Tips:

  • 如果使用震动反馈 + 按键音,必须授予「完全访问权限」。
  • 目前发现的 bug: iMessage 里 quote 文字回复时,无法使用 Rime 中文输入法,一直默认英文。需要换输入法才可以。

Q: MacBook 上的词好像没有同步到 iPhone 上?两设备用不同 installation_id
A: 自定义短语文件 custom_phrase.txt 因为格式为 txt,所以不会自动同步到其他设备。需要手动同步到其他设备的 Rime 用户文件夹下。

Q: 如何手动同步 custom_phrase.txt
A:

  1. 打开 Hamster app > Wi-Fi 上传方案。复制粘贴局域网地址到浏览器,
  2. 打开 Rime 文件夹
  3. 上传 custom_phrase.txt 文件。确认覆盖原始文件。

    浏览器内支持拖拽上传。

  4. 重新部署方案后生效。

A compomise if you don’t want to manually sync custom_phrase.txt every time:

  • 所有设备的 installation_id 设为相同的值,例如 MyDevices
  • 这样所有设备的用户词典会合并在一起,缺点是无法区分不同设备的配置文件,不同设备的 yaml 文件或许不同。
  • 所有设备共享 installation_id 后,同步使用场景:

    1. 在 PC1 造词后,点击同步;
    2. 之后,在 PC2 上点击同步,即可使用在 PC1 的造词。
    3. 另一手机上使用同文输入法,也是点击同步后,即可以使用 PC1 或 PC2 上的造词。

ref:


FAQ

Q: 输入法为什么显示繁体?
A: 用 ctrl + ` 或者 F4 切换输入方式。首先选择一级输入法 (如明月拼音,五笔等),进入二级菜单可选择简体繁体的切换。

Q: 如何切换中英文?
A: 初始设置 Shift 键切换中英文。→ Control+Shift+2

Q: 如何使 Rime 只负责中文,英文用系统自带的?
A: settings > keyboard > Input Sources,删除 Rime 以外的输入法。之后就只剩下【鼠须管】和 【ABC】输入法了。

Q: 输入词语之后,想单独选字,如何操作?
A: 使用左右方向键移动光标,移到想要选择的字的位置,就会出现对应的单字候选。Tab 键可以切换到下一个字的拼音; Shift + Tab 切换到上一个字的拼音。


Q: 中英文反复横跳,如何设置英文用系统默认,rime 默认为中文?
A:

  1. 找到你想要设置的输入法配置文件,例如 luna_pinyin.custom.yaml,然后添加字段如下:

    switches:
      - name: ascii_mode
        reset: 0
        states: [ 中文 ] # 只保留中文输入法,避免无意间切到英文输入状态
    
  2. 全局配置文件 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

  3. 对于某些软件,如 Alfred, 只需要英文。应用场景为,当下输入法为 Rime 中文时,切换到 Alfred 之后自动变为英文输入。

    在全局配置文件 squirrel.custom.yaml 中添加字段如下:

    patch: 
     # 以下程序中默认英文输入
     app_options:
         com.runningwithcrayons.Alfred:
             ascii_mode: true
    
    • ascii_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 的字符串。

  1. 找到目标 app, 右键选择 Show Package Contents
  2. 进入 Contents 目录,打开 Info.plist 文件
  3. 搜索 (cmd + F) 找到 CFBundleIdentifier 字段,复制其值

ref: 在特定应用中默认英文输入


Q: 如何让括号使用半角符号?
A: 修改 luna_pinyin.custom.yaml 文件中的 punctuator 字段,例如:

patch:
  punctuator/full_shape: # 半角标点
    "(" : 
    ")" : 
  punctuator/half_shape: # 半角标点
    "(" : "("
    ")" : ")"

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: iPhone 下有没有办法使用 Rime?
A: iOS 下有个 app 叫 仓输入法 ↩︎

「仓输入法」是基于 Rime 的 iOS 输入法。


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」操作见下文手动配置.


如果想要中英混输效果,将 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 中添加如下字段:

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     # 英文词库词频调高,数值越大,英文越靠前

ref:


Miscellaneous

  • 既版本 1.0.1 后,不再支持 style/horizontalstyle/vertical (原本用于设置候选词框的排列方式,在 ~/Rime/squirrel.custom.yaml中配置)

    在新版本中,横排支持改成 candidate_list_layout: linear↩︎

  • 模糊音

    具体见上文模糊音配置

  • emoji 映射

    此功能在 MacOS 下不需要,有快捷键直接调用 emoji 面板。但是 iPhone 下就比较麻烦,需要切换到 emoji 键盘。

    先用一阵子再说,有需要再配置。


高阶功能

有需要再配置


Tutorials:


微信输入法

非常智障 下载两次 使用后卸载 有严重 bug 无法选词 避雷!

卸载

  1. Go to /Library/Input Methods
  2. 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.