Rime 输入法指北

前言

出于对国产输入法软件的不信任,再加上国产输入法广告太多等因素的影响,促使我想要尽快找到一个开源、快捷、不自动上传云端的输入法。

在网上搜索时,Rime 收到了一致好评,让我萌生了非常大的兴趣,故特意找到了 Rime 的相关资料并整理。

本文基于 Rime v1.5.3 版本进行整理,其他版本可能不适用。

关于 Rime

什么是 Rime

Rime 全名是「中州韵输入法引擎」,Rime 不是一种输入法。是从各种常见键盘输入法中提炼出来的抽象的输入算法框架,由 佛振 大佬开发。
Rime 通过各种输入方案来实现对几乎所有中文的支持,包括但不限于【拼音】、【注音】、【双拼】、【五笔】、【仓颉】,并且可以简单的进行【简繁】的切换

什么是输入方案

Rime 由于本质只是一个框架,本身是不知道如何输入的。
如果我们想要使用 Rime,就得定义一些关于如何输入的设置来告诉 Rime,这些设置就是输入方案。

Rime 的版本

Rime 是一个天生跨平台的框架,在每一个平台都有对应的发行版本:

  1. Linux:
    • 官方:ibus-rime(中州韵)
    • 第三方:fcitx-rime
  2. windowns:
    • 官方:Weasel(小狼毫)
    • 第三方:PRIME
  3. macOS:
    • 官方:Squirrel(鼠须管)
    • 第三方:XIME
  4. Android:
    • 第三方:Trime(同文)
  5. iOS:
    • 第三方:iRime

上面是 Rime 在各平台对应的软件,Rime 默认提供了两个拼音输入方案「朙月拼音」和「地球拼音」,两者都可以输入准确的繁体和简体,而且「地球拼音」还支持声调输入。
Rime 还支持了许多种方言拼音,如吴语、粤语,甚至中古汉语。

Rime 的文件架构

Rime 所有的配置文件、输入方案及词典文件,均是普通的文本文档,均要求 UTF8 编码。
其中配置文件、输入方案要求使用 yaml 格式的文件。词典文件使用普通的 txt 文档即可。

Rime 中将文件分为 共享文件夹用户文件夹

  • 共享文件夹 中存放的是 Rime 发行版的默认文件,一般是不允许进行修改的
    • 【中州韵 ibus-rime/usr/share/rime-data/
    • 【小狼毫 Weasel安装目录\data
    • 【鼠须管 Squirrel/Library/Input Methods/Squirrel.app/Contents/SharedSupport/
  • 用户文件夹 的存放位置
    • 【中州韵 ibus-rime~/.config/ibus/rime/
    • 【小狼毫 Weasel%APPDATA%\Rime,也可以通过“开始菜单\小狼毫输入法\用户文件夹”打开。
    • 【鼠须管 Squirrel~/Library/Rime/,也可以通过“系统输入法菜单/鼠须管/用户设置”打开。

用户文件夹

刚开始安装后,在 用户文件夹 中是没有文件的,当我们运行 Rime 后会出现以下文件/文件夹:

  • build/*:这个文件夹下存放的是我们每次部署之后生成的静态文件
    • <输入方案名>.prism.bin:Rime 棱镜,拼写运算规则
    • <词典名>.table.bin:Rime 固态词典,按音节编码检索词条的索引
    • <词典名>.reverse.bin:Rime 反查词典,按词条检索编码的索引
  • <词典名>.userdb/*:这个文件夹是我们的词典文件夹,当我们进行了输入之后,会将输入的内容存入,以便进行词语调频
  • installation.yaml:这个文件是关于我们本机 Rime 的安装时间、版本信息等
  • user.yaml:这个文件是关于 Rime 的一些设置选项,比如我们上次选择的输入方案

Rime 的配置文件都需要放于 用户文件夹 下,分为三类:

  • default.yaml:全局配置,存放跨输入方案的通用配置
  • <输入方案名>.schema.yaml:存放某一个输入方案的配置
    如:double_pinyin_flypy.schema.yaml
  • <发布版名>.yaml:存放某个发行版的独有配置
    如:symbols.yaml

如果有其他额外文件,也需要放入 用户文件夹 下,才能被配置文件正确使用

自定义 Rime 的全局配置

我的全局配置 default.custom.yaml

可配置项:

  • page_size:每页个数,默认 5,允许 1~9

该项可在每个输入方案中单独设置

示例:

menu:
  page_size: 8

schema_list

可配置项:

  • schema:每一项 schema 对应一项方案的 schema_id

示例:

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

switcher

可配置项:

  • caption:切换器被调用时屏幕显示的名字
  • hotkeys:切换器调用的快捷键
  • abbreviate_options
  • fold_options
  • option_list_separator
  • save_options

示例:

switcher:
  abbreviate_options: true
  caption: "〔方案選單〕"
  fold_options: true
  hotkeys:
    - "Alt+Shift+Control+grave"
    - "Control+grave"
  option_list_separator: "/"
  save_options:
    - full_shape
    - ascii_punct
    - simplification
    - extended_charset
    - zh_hant
    - zh_hans
    - zh_hant_tw

自定义 Rime 的输入法方案

Rime 输入方案主要分为三部分

  • schema:关于整个输入方案的信息阐述
  • switches:可以切换的开关,比如切换全半角,切换简繁体
  • engine:Rime 的核心配置,配置整个 Rime 是如何进行运作

特殊说明:

输入方案的某些细项设置是可以写在全局设置中,比如

  • key_binder
  • punctuator
  • ascii_composer
  • recognizer

在输入方案中设置 menu/page_size 是可以的

schema

可配置项:

  • name:方案的显示名称〔即出现于方案选单中,通常为中文〕
  • schema_id:方案内部名,在代码中引用此方案时的名称,通常由英文,数字,下划线组成
  • author:方案作者。如果您对方案做出了修改,请保留原作者名,放入自己的名字加在后面
  • description:简要描述方案历史,码表来源,该方案规则等
  • dependencies:如果本方案依赖于其他方案〔通常来说会依赖其他方案做为反查,抑或是两种或多种方案混用时]
  • version:版本号,在发布新版前请确保已升版本号

示例:小鹤双拼

schema:
  name: "小鶴雙拼"
  schema_id: double_pinyin_flypy
  author:
    - "double pinyin layout by 鶴"
    - "Rime schema by 佛振 <chen.sst@gmail.com>"
  description: |
    朙月拼音+小鶴雙拼方案。
  dependencies:
    - stroke
  version: 0.18

switches

  • ascii_mode:中英文切换开关。0 为中文,1 为英文

  • full_shape:全角符号/半角符号开关。默认 0 为半角,1 为全角。注意,开启全角时英文字母亦为全角。

  • extended_charset:字符集开关。0 为 CJK 基本字符集,1 为 CJK 全字符集。仅 table_translator 可用

  • ascii_punct:中西文标点切换开关,0 为中文句读,1 为西文标点。

  • simplification:是转化字开关。一般情況下与上同,0 为不开启转化,1 为转化。
    simplification 选项名称可自定义,亦可添加多套替換用字方案:

    - name: zh_cn
      states: ["漢字", "汉字"]
      reset: 0

    - options: [ zh_trad, zh_cn, zh_mars ]
      states:
        - 字型 → 漢字
        - 字型 → 汉字
        - 字型 → 䕼茡
      reset: 0
    • name/options:須与 enginesimplifieroption_name 相同

      switches:
        - name: zh_simp
          reset: 1
          states: [ 漢字, 汉字 ]
      simplifier:
        option_name: zh_simp
    • states:可不写,如不写则此开关存在但不可见,可由快捷鍵操作

    • reset:设定开关默认状态〔若 reset 为空,则使用上次状态〕

  • 字符集过滤。此选项沒有默认名称,須配合 charset_filter 使用。可單用,亦可添加多套字符集

示例:

switches:
  - name: ascii_mode
    reset: 0
    states: ["中文", "西文"]
  - name: full_shape
    states: ["半角", "全角"]
  - name: extended_charset
    states: ["通用", "增廣"]
  - name: simplification
    states: ["漢字", "汉字"]
  - name: ascii_punct
    states: ["句讀", "符號"]

engine

Rime 的核心原理是通过 enagine 下的 4 大组件对用户输入进行处理,4 大组件分别是:

  • Processors
  • Segmentors
  • Translators
  • Filters

整个流程为:

  1. Processors 下的各个 processor 对用户的输入(即按下键盘的哪一个键)依次进行处理,将按键按照预设的规则对按键进行响应
    • 不处理:Rime 不对该按键做任何响应,使用系统默认操作
    • 特殊操作:比如 Enter 上屏,切换输入方案、组合键等
    • 输入候选:该按键是需要转换为文字的按键,比如 123abc,将该按键字符存入【输入码】上下文
  2. 当【输入码】上下文改变时,Segmentors 下的 segmentor 会将当前输入码根据格式分段,各自打上标签。比如【朙月拼音】中,输入码 2012nian\,划分为三个编码段:2012(贴 number 标签)、nian(贴 abc 标签)、\(贴 punct 标签)。
  3. 顾名思义,Translators 完成由编码到文字的翻译。但有几个要点:
    • 翻译的对象是划分好的一个代码段。
    • 某个 translator 组件往往只翻译具有特定标签的代码段。
    • 翻译的结果可能有多条,每条结果成为一个展现给用户的候选项。
    • 代码段可由几种 translator 分别翻译、翻译结果按一定规则合并成一列候选。
    • 候选项所对应的编码未必是整个代码段。用拼音敲一个词组时,词组后面继续列出单字候选,即是此例。
  4. 翻译完成后,由 Filters 对所有翻译结果进行处理,比如去重

示例:

engine:
  processors:
    - ascii_composer
    - recognizer
    - key_binder
    - speller
    - punctuator
    - selector
    - navigator
    - express_editor
  segmentors:
    - ascii_segmentor
    - matcher
    - abc_segmentor
    - punct_segmentor
    - fallback_segmentor
  translators:
    - punct_translator
    - script_translator
    - "table_translator@custom_phrase"
  filters:
    - "simplifier@emoji_suggestion"
    - "simplifier@zh_simp"
    - uniquifier
    - single_char_filter

Processors

  • ascii_composer:处理英文模式及中英文切换
  • recognizer:与 matcher 搭配,处理符合特定规则的输入码,如网址,反查等
  • key_binder:在特定条件下将按键绑定到其他按键,如重定义逗号,句号为预设翻页,开关快捷键等
    处理某些自定义的组合键
  • speller:拼写处理器,接受字符按键,编辑输入
    处理自定义的键,通常为 26 个英文字母
  • punctuator:句读处理器,将个别字符按键直接映射为标点符号或文字
    处理句读键、数字键
  • selector:选字处理器
    处理数字键、上下方向键、PageUpPageDown
  • navigator:处理输入栏内的光标移动
    处理左右方向键、HomeEnd
  • express_editor:编辑器
    处理空格、回车、回退键

不常用:

  • fluid_editor:句式编辑器,用于以空格断开词,回车上屏的【注音】,【语句流】等输入方案,与 express_editor 互斥,也可以写作 fluency_editor
  • chord_composer:和弦作曲家或曰并击处理器,用于【宫保拼音】等多键并击的输入方案
  • lua_processor:使用 lua 自定义按键,后接 @lua函数名
    • lua 函数名即用户文件夹内 rime.lua 中函数名,参数为(key, env)
recognizer

可配置项:

  • import_preset:从外部文件导入
  • patterns:配合 segmentor 的 prefix 和 suffix 完成段落划分、tag 标记

示例:

recognizer:
  import_preset: default
  patterns:
    code: "[a-zA-Z]+(*$"
    email: "^[A-Za-z][-_.0-9A-Za-z]*@.*$"
    html: "^<[a-z]+>$"
    punct: "^/([a-z]+|[0-9]0?)$"
    uppercase: "[A-Z][-_+.'0-9A-Za-z]*$"
    url: "^(www[.]|https?:|ftp[.:]|mailto:|file:).*$|^[a-z]{1,10}[.:_-].*$"
key_binder

可配置项:

  • import_preset:从外部文件导入
  • bindings:设置组合键的映射
    每一条 binding 中包含字段:
    • accept:键盘输入的按键
    • when:作用条件
    • send:实际调用的按键
    • toggle:切换开关,和 send 不共存

acceptsend 作用的键,需要输入 Ibus 风格的键名:

Mac 只支持 Alt/Option 键,不支持Command键,详见

Shift_L		左Shift
Shift_R		右Shift
Control_L	左Ctrl
Control_R	右Ctrl
Alt_L		左Alt
Alt_R		右Alt
# 在 windows 是 windows 键
Meta_L		左Meta
Meta_R		右Meta
Super_L		左Super
Super_R		右Super
Hyper_L		左Hyper
Hyper_R		右Hyper

BackSpace	退格
Tab			制表符
Caps_Lock	大写键
Linefeed	换行
Clear		清除
Return		回车
Pause		暂停
Escape		Esc退出
Delete		刪除
Home		Home
Left		左箭头
Up			上箭头
Right		右箭头
Down		下箭头
Prior		上翻
Page_Up		上翻
Next		下翻
Page_Down	下翻
space 		空格
Sys_Req	
End			末位
Begin		始位
Shift_Lock	上檔鎖
Scroll_Lock	滚动锁
Num_Lock	小键盘锁
Select		选择
Print		打印
Execute		执行
Insert		插入
Undo		还原
Redo		重做
Menu		菜单
Find		寻找
Cancel		取消
Help		帮助
Break		中断

grave			`
asciitilde		~
exclam			!
at				@
numbersign		#
dollar			$
percent			%
ampersand		&
asciicircum		^
asterisk		*
parenleft		(
parenright		)
underscore		_
minus			-
plus			+
equal			=
bracketleft		[
bracketright	]
braceleft		{
braceright		}
bar				|
slash			/
backslash		\
semicolon		;
colon			:
apostrophe		'
quotedbl		"
comma			,
period			.
less			<
greater			>
question		?

KP_Space		小键盘空格
KP_Tab			小键盘制表符
KP_Enter		小键盘回车
KP_Delete		小键盘刪除
KP_Home			小键盘原位
KP_Left			小键盘左箭头
KP_Up			小键盘上箭头
KP_Right		小键盘右箭头
KP_Down			小键盘下箭头
KP_Prior		小键盘上翻
KP_Page_Up		小键盘上翻
KP_Next			小键盘下翻
KP_Page_Down	小键盘下翻
KP_End			小键盘末位
KP_Begin		小键盘始位
KP_Insert		小键盘插入
KP_Equal		小键盘等于
KP_Multiply		小键盘乘号
KP_Add			小键盘加号
KP_Subtract		小键盘減号
KP_Divide		小键盘除号
KP_Decimal		小键盘小数点
KP_0			小键盘0
KP_1			小键盘1
KP_2			小键盘2
KP_3			小键盘3
KP_4			小键盘4
KP_5			小键盘5
KP_6			小键盘6
KP_7			小键盘7
KP_8			小键盘8
KP_9			小键盘9

示例:

key_binder:
  bindings:
    - {accept: minus, send: Page_Up, when: paging}
    - {accept: equal, send: Page_Down, when: has_menu}
    - {accept: bracketleft, send: Page_Up, when: paging}
    - {accept: bracketright, send: Page_Down, when: has_menu}
    - {accept: 9, send: Page_Up, when: paging}
    - {accept: 0, send: Page_Down, when: has_menu}
    - {accept: semicolon, send: 2, when: has_menu}
    - {accept: apostrophe, send: 3, when: has_menu}
speller

可配置项:

  • alphabet:设置本 speller 需要监听的键
  • initials:设置哪些键仅在开头的时候才需要监听
  • finals:设置哪些键仅在末尾的时候才需要监听
  • delimiter:分词符
  • algebra:Rime 核心的拼写运算规则,所有 algebra 算出的规则最后写入 prism
  • max_code_length:行码最大码長,超过则自动顶字上屏〔number
  • auto_select:是否开启自动上屏〔truefalse
  • auto_select_pattern:自动上屏规则(正则),当输入码匹配正则时自动顶字上屏。
  • use_space:空格是否可作为输入码〔truefalse
punctuator

可配置项:

  • import_preset:从外部文件导入
  • half_shape:半角模式下的句读映射
    每条选项可以设置上屏模式
    • 默认:选项模式
    • commit:直接上屏
    • pair:交替上屏
  • full_shape:全角模式下的句读映射
    half_shape 可设置上屏模式
  • use_space:是否使用空格顶字〔truefalse

示例:

punctuator:
  # 标点及特殊表情,引入 symbols 文件
  import_preset: symbols
  # 覆盖 symbols 文件对应 key
  symbols:
    "/dn": [,,,,,,,,, ↩︎,,,,,,,,,]
    "/fh": [ ©, ®,,,,,,,,,,,,,, ☑︎,,,,,,,,,,,,]
    "/xh": [, ×,,,,,,,,,,,,]
  half_shape:
    "`": "·"
    "~": "~"
    "@": "@"
    "#": "#"
    "$": ["¥", "$", "€", "£", "¢", "¤"]
    "%": "%"
    "^": "……"
    "*": ["*", "×", "·", "・", "※", "*", "❂"]
    "_": "——"
    "=": "="
    '\': "、"
    "'":
      pair:
        - "‘"
        - "’"
    "|": "|"
    "(": "("
    ")": ")"
    "[": "【"
    "]": "】"
    "{": "「"
    "}": "」"
    "<": "《"
    ">": "》"
    "/": ["/", "÷"]

Segmentors

  • ascii_segmentor:标识英文段落〔例如在英文模式下〕字母直接上屛
  • matcher:配合 recognizer 标识符合特定规则的段落,如网址,反查等,加上特定 tag
  • abc_segmentor:标识常规的文字段落,加上 abc 这个默认tag
  • punct_segmentor:标识句读段落〔键入标点符号用〕加上 punct 这个tag
  • fallback_segmentor:标识其他未标识段落
  • affix_segmentor:用户自定义 tag
    • 可加载多个实例,后接 @tag名

不常用:

  • lua_segmentor 使用lua自定义切分,后接 @lua函数名

Translators

  • table_translator:编码表翻译器,用于仓颉,五笔等基于编码表的输入方案
    • 可加载多个实例,后接 @翻译器名〔如:cangjie,wubi等〕
  • script_translator:脚本翻译器,用于拼音,粤拼等基于音节表的输入方案
    • 可加载多个实例,后接 @翻译器名〔如:pinyin,jyutping等〕
  • punct_translator:配合 punct_segmentor 转换标点符号
  • echo_translator:没有其他候选字时,显示输入码〔输入码可以 Shift+Enter 上屛〕

不常用:

  • reverse_lookup_translator:反查翻译器,用另一种种编码方案查码
  • lua_translator:使用 lua 自定义输入,例如动态输入当前日期,时间,后接 @lua函数名
    • lua 函数名即用户文件夹内 rime.lua 中函数名,参数为(input, seg, env)
    • 可以 env.engine.context:get_option(“option_name”)方式绑定到 switch 开关/key_binder 快捷键
translator

每个输入方案有一个关于 translator 的全局设置,可设置项:

  • dictionary:翻译器使用的字典名

  • prism:设定此翻译器的 speller 生成的棱镜文件名,或此副编译器调用的棱镜名

  • user_dict:设定用户词典名

  • db_class:设定用户词典类型,可设 tabledb〔文本〕或 userdb〔二进制〕

  • preedit_format:上屛码自定义

  • comment_format:提示码自定义

  • initial_quality:设定此翻译器结果优先级

  • disable_user_dict_for_patterns:禁止某些编码录入用户词典〔truefalse

  • enable_sentence:是否开启自动造句〔truefalse

  • enable_user_dict:是否开启用户词典〔用户词典记录动态字词频,用户词〕〔truefalse

table_translator 生效:

  • enable_charset_filter:是否开启字符集过滤〔cjk_minifier 启用后可适用于 script_translator〕〔truefalse
  • enable_encoder:是否开启自动造词〔truefalse
  • encode_commit_history:是否对已上屛词自动成词〔truefalse
  • max_phrase_length:最大自动成词词长〔number
  • enable_completion:提前显示尚未输入完整码的字〔truefalse
  • sentence_over_completion:在无全码对应字而仅有逐键提示时也开启智能组句〔truefalse
  • strict_spelling:配合 speller 中的 fuzz 规则,仅以畧拼码组词〔truefalse

script_translator 生效

  • spelling_hints:设定多少字以内部预定标注完整带调拼音

除了 translator 项设置,其他通过 @ 定义的副翻译器还可单独设置:

  • tag:设定此翻译器针对的 tag。默认 abc
  • prefix:设定此翻译器的前缀标识,默认无
  • suffix:设定此翻译器的后缀标识,默认无
  • tips:设定此翻译器的输入前提示符,默认无
  • closing_tips:设定此翻译器的输入结束提示符,默认无

示例:

# tarnslator
translator:
  dictionary: luna_pinyin
  prism: luna_pinyin_simp
  preedit_format:
    - xform/([nl])v/$1ü/
    - xform/([nl])ue/$1üe/
    - xform/([jqxy])v/$1u/

# 副翻译器设置
custom_phrase: # 這是一個 table_translator
  dictionary: ""
  user_dict: custom_phrase
  db_class: tabledb
  enable_sentence: false
  enable_completion: false
  initial_quality: 1
词典与码表

translator 通过词典来翻译对应的片段,通常命名为 <词典名>.dict.yaml

词典

  • name:词典名,内部使用,可以与配套的输入方案名一致,也可不同;
  • version:管理词典的版本;
  • sort:词条初始排序方式,〔by_weight(按词频高低排序)或 original(保持原码表中的顺序)〕;
  • use_preset_vocabulary:选择是否导入默认词汇表【八股文】〔truefalse〕。

示例:

# 这里以 --- ... 分別标记出 YAML 文件的起始与结束位置
---
name: luna_pinyin
version: "0.9"
sort: by_weight
use_preset_vocabulary: true
# 在 ... 标记之后的部分就不会作为 YAML 文件來解析
...

码表,定义编码与文字的映射关系,通过制表符分割为三列:

  • 文字
  • 编码,如果该编码有多个音节,各音节以空格分开
  • 权重,相同编码时出现在候选列表前面的几率

示例:

你	ni
我	wo
的	de	99%
的	di	1%
地	de	10%
地	di	90%
目	mu
好	hao

你我
你的
我的
我的天
天地	tian di
好天
好好地
目的	mu di
目的地	mu di di

Filters

  • simplifier:简繁转换,表情转换等
    • 可加载多个实例,后接 @d转化器名〔如:zh_simp、emoji_suggestion 等〕
  • uniquifier:过滤重复的候选字,有可能来自 simplifier
  • reverse_lookup_filter:反查滤镜,以更灵活的方式反查,Rime1.0 后替代 reverse_lookup_translator
    • 可加载多个实例,后接 @滤镜名〔如:pinyin_lookup,jyutping_lookup 等〕
  • charset_filter 字符集过滤
    • 后接 @字符集名〔如:utf-8(无过滤),big5,big5hkscs,gbk,gb2312〕
  • lua_filter:使用 lua 自定义过滤,例如过滤字符集,调整排序,后接 @lua函数名
    • lua函数名即用户文件夹内rime.lua中函数名,参数为(input, env)
    • 可以env.engine.context:get_option(“option_name”)方式绑定到switch开关/key_binder快捷键

script_translator

  • cjk_minifier:字符集过滤,使之支持 extended_charset 开关

table_translator

  • single_char_filter:单字过滤器,如加载此组件,则屛敝词典中的词组

使用小鹤双拼

小鹤双拼原始配置文件:double_pinyin_flypy.schema.yaml

我的小鹤双拼配置 double_pinyin_flypy.schema.yaml

Mac 上如何使用 Squirrel

在 mac 上通常使用 homebrew 的方式安装 app

brew cask install squirrel

如果没有 homebrew,点击这里

Squirrel 设置项

Squirrel 配置项基于 0.14.0 整理

我的 suirrel 配置 squirrel.custom.yaml

特定程序操作 options

可配置项:

  • ascii_mode:是否使用英文〔truefalse
  • vim_modeconfig_version 0.34.0 启用,是否支持使用 ESC 键退出编辑模式并切换为英文〔truefalse

示例:

options:
  com.apple.Xcode:
    ascii_mode: true

可视化的自定义皮肤

可视化编辑器

Android 上如何使用 Trime

正式版,点击下载

测试版,点击下载

我的 Trime 同文配置 jiz4oh.trime.yaml

基础设置

  1. 启用输入法
    20201004221229

  2. 将用户文件夹指向自定义配置文件所在位置
    20201004221441

  3. 部署
    20201004221538

  4. 使用自定义主题
    20201004222056

其他设置

telegram-cloud-photo-size-5-6327933625852603060-y

Rime 使用心得

重点(必看!)

  1. 很多人修改了方案不生效,或者新安装了 Rime,却发现无法使用,一个很重要但很容易被忽视的解决方案是:

    修改方案后,一定要点击部署!!!
    修改方案后,一定要点击部署!!!
    修改方案后,一定要点击部署!!!

    如何部署?点击这里

    • 【小狼毫】从开始菜单选择「重新部署」;或当开启托盘图标时,在托盘图标上右键选择「重新布署」;
    • 【鼠须管】在系统语言文字选单中选择「重新布署」;
    • 【中州韵】点击输入法状态栏(或IBus菜单)上的⟲ (Deploy) 按钮
  2. 修改方案时,强烈建议使用 <输入方案名>.custom.yaml 的方式进行,除非这个方案是你自己原创!

  3. 使用 <输入方案名>.custom.yaml 修改方案时,一定要写 patch

如何切换 Rime 输入方案

比如如果需要更换输入方案-小鹤双拼,那就需要创建 default.custom.yaml 文件,写入以下内容

# patch 一定要写
patch:
  schema_list:
    # 默认的明月拼音
    - schema: luna_pinyin_simp
    # 额外添加的小鹤双拼,前提是需要存在 double_pinyin_flypy.schema.yaml 文件,不然的话会导致无法输入字符
    - schema: double_pinyin_flypy

如何修改 Rime 输入方案的配置

  1. 如果我们对默认的明月拼音方案的一些设置不满意,我们需要创建一个 luna_pinyin_simp.custom.yaml 文件。

    Q:为什么我要用 luna_pinyin_simp.custom.yaml,而不是 luna_pinyin_simp.schema.yaml,我听说 <输入方案名>.schema.yaml 才是输入方案的正确命名。
    A:<输入方案名>.schema.yaml 确实是输入方案的正确命名方式。
    A:我们使用 <输入方案名>.custom.yaml 是因为原始的 <输入方案名>.schema.yaml 方案(比如 luna_pinyin_simp.schema.yaml)是由他人所编写
    A:我们不使用 <输入方案名>.custom.yaml 而是直接修改 <输入方案名>.schema.yaml 文件进行自定义,如果作者对其进行了一些更新,我们会出现两种情况:

    1. 跟随原作者更新了 <输入方案名>.schema.yaml 文件,我们之前所做的自定义全部白费
    2. 不跟随更新,失去原作者新增或修复的功能
  2. luna_pinyin_simp.custom.yaml 中修改

    # 重点!custom.yaml 必须写 patch,且在第一行并只有一个
    patch:
      # 需要覆写的设置项
      xxxx: xxxx

一个高度定制化的 Rime 配置文件结构示例:

20201003122209

  • opencc/*OpenCC字形转换配置及字典文件,简繁转换,emoji 转换等
  • custom_phrase.txt:自定义的词典
  • default.custom.yaml:自定义的全局设置
  • double_pinyin_flypy.custom.yaml:自定义的小鹤双拼输入方案设置
  • double_pinyin_flypy.schema.yaml:从网上下载的小鹤双拼原始输入方案
  • luna_pinyin_simp.custom.yaml:自定义的明月拼音输入方案设置
  • pinyin_simp.dict.yaml:网上下载的默认词库文件
  • squirrel.custom.yaml:自定义的 Squirrel 设置
  • symbols.yaml:额外的关于表情符号的输入配置

如何删除自造词

  1. 打错字后,立刻删掉是不会录入词库的。Rime 是在有新词输入时才把之前的词录入词库
  2. 选中已造词,使用 Shift + Delete 即可删除
  3. mbp 因为移除了 Delete 键,使用 Shift + Fn + Backspaces 键删除

如何同步 Rime 词库

同步原理

  1. 点击同步按钮
  2. installation.yaml 中获取
    • installation_id
    • sync_dir
  3. sync_dir 文件夹下生成 installation_id 文件夹
  4. Rime 会将 用户文件夹 下所有文件写入到步骤 3中文件夹
  5. 根据 <词典名>.userdb/* 下的词典文件,生成一个词典快照文件 <词典名>.userdb.txt
  6. 将快照文件内容与 sync 文件夹下其他文件夹同名快照文件进行对比,更新当前步骤 5中词典文件
  7. 更新后的快照文件放入步骤 3中文件夹

所以重点是设置 installation.yaml 中的 installation_idsync_dir

installation_id 默认为随机生成的 UUID
sync_dir 默认为 用户文件夹 下的 sync 文件夹

示例:

distribution_code_name: Squirrel
distribution_name: "鼠鬚管"
distribution_version: 0.14.0
install_time: "Tue Apr 28 22:33:50 2020"
rime_version: 1.5.3
# 上面几项由 Rime 维护

installation_id: "nuc8_mac"
sync_dir: "/Users/jiz4oh/OneDrive/RimeSync"

同步进阶

知道原理之后,我们可以通过云盘来同步不同设备的词库及设置

比如使用 OneDrive

  1. 在 OneDrive 中设置 RimeSync 文件夹
  2. 将设备 A 的 sync_dir 指向 OneDrive 下 RimeSync
  3. 将设备 B 的 sync_dir 指向 OneDrive 下 RimeSync

这样就是实现了 A 和 B 的的词库同步

参考

注:本文由 Rime 鼠须管【小鹤双拼】输入方案撰写

  1. RIME 官网

  2. Rime 定製指南

  3. Schema.yaml 詳解