Skip to content

rgb-24bit/rime

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Rime 输入法配置

目录

快捷键

快捷键作用
C-`切换输入方案
Tab下一个 Segmentors(拼音)
S-Tab上一个 Segmentors(拼音)
===下一页
-上一页
C-p/n/b/f上下左右移动
C-a句首
C-e句末
C-d删除
C-g清空

配置文件

Rime 常用的配置文件大概可以分为几个部分:

  • 预设输入方案 [name].schema.yaml
  • 词典配置文件 [name].dict.yaml
  • Rime 配置文件 default.yaml
  • 发行版配置文件 weasel/squirrel.yaml
  • 预设输入方案定制 [name].custom.yaml
  • 自制输入方案与词典文件

通常,可以使用 [name].custom.yaml 对指定的配置进行修改,配置格式通常为:

patch:
  a/b/c: ...

效果似乎是覆盖如下配置项的值:

a:
  b:
    c: ...

修改配置后需要重新部署才可以生效,具体配置项可以参考默认配置文件。

用户词典

用户文件夹中的 *.userdb 目录和 sync 目录下的 *.userdb.txt 文件记录了用户的输入习惯,备份配置时,可以将 *.userdb.txt 文件备份, 在新的电脑上,通过 用户词典管理 程序合并用户词典到当前电脑。

配置语法

__include
可写在配置源文件任一 YAML Map 节点下,用于在当前位置包含另一 YAML 节点的内容:
include_example_1:
   __include: local/node

local:
   node: contents to include
    

被引用的节点可以来自另一个配置文件。目标配置节点的路径以 <filename>:/ 开始,可省略扩展名 .yaml:

include_example_2:
   __include: config:/external/node

include_example_3:
   __include: config.yaml:/external/node
    

包含整个文件,可指定路径为目标配置文件的根节点:

include_example_4 :
   __include : config.yaml:/
    

包含另一个 YAML 节点后,源文件中 __include: 指令所在 map 除编译指令外的其他数据与被包含的 map 合并:

include_example_5:
   __include: some_map 
  occupation: journalist  # keep
  simplicity: very        # override value for included key

some_map:
  simplicity: somewhat
  naivety: sometimes
    

包含 YAML 列表,则指令所在 map 节点替换为所引用的 YAML 列表。该 map 节点不应包含任何编译指令以外的 key-value,因为不相容于 YAML 列表类型。

也不能直接在该节点下追加列表项,因为 YAML 语法不允许混合 map 与 list。在包含列表后追加、修改列表项, 必须使用下文介绍的 __append:__patch: 指令。

__patch
用于修改某一相对路径下的配置节点,而非当前节点的整体。基本语法为:
__patch:
  key/A: value A 
  key/B: value B
    

目标节点路径的写法为将各级 map 的 key 用 / 分隔。因此 key 如果包含 / 字符,则不能作为节点路径的一部分。

可在节点路径末尾添加 /+ 操作符,表示合并 list 或 map 节点,或者添加 /= 表示用指定的值替换目标节点原有的值, 若未指定操作符,指令 __patch 的默认操作为替换:

patch_example_1:
  sibling: old value 
  append_to_list:
    - existing item 
  merge_with_map:
     key: value 
  replace_list:
    - item 1 
    - item 2 
  replace_map:
    a: value 
    b: value 
  __patch:
    sibling: new value 
    append_to_list/+:
      - appended item 
    merge_with_map/+:
      key: new value 
      new_key: value 
    replace_list/=:
      - only item 
    replace_map/=:
      only_key: value
    

__patch 指令的另一种主要用法是引用另一个节点中的补丁内容,并作用于指令所在节点:

patch_example_3:
  __patch: changes 
  some_list:
    - youngster 
    - elder 
  some_map:
    simplicity: somewhat 
    naivety: sometimes

changes:
  some_list/+:
    - someone else 
  some_map/simplicity: too much
    

YAML 语法不允许 map 有重复的 key。如果要引用不同位置的多项补丁,可以为 __patch 指定一个列表,其中每项通过节点引用定义一组补丁:

patch_example_4:
  __include: base_config 
  __patch:
    - company_standard 
    - team_convention 
    - personal_preference
    

补丁指令中,目标节点路径由各级节点的 key 组成。若某一节点为 list 类型,可以 @<下标> 形式指定列表项。下标从 0 开始计数。 无论列表长度,末位列表元素可表示为 @last

patch_list_example_1:
  some_list/@0/simplicity: very 
  some_list/@last/naivety: always
    

在指定元素之前、之后插入列表元素,用 @before <下标>, @after <下标>. @after last 可简写为 @next 的形式:

patch_list_example_2:
  'some_list/@before 0/youthfulness': too much 
  'some_list/@after last/velocity': greater than westerners 
  some_list/@next/questions: no good
    

若包含或补丁指令的目标是以 ? 结尾的节点路径,则当该路径对应的节点(或所属外部配置文件)不存在时,不产生编译错误:

__patch: default.custom:/patch?

nice_to_have:
  __include: optional_config?
    
__append & __merge
追加指令 __append 将其下的列表项追加到该指令所在的节点。合并指令 __merge 将其下的 map 合并到该指令所在的节点。 这两条指令只能用在 __include 指令所在节点及其子节点。
append_merge_example_1:
  __include: starcraft 
  __merge:
    made_by: blizzard entertainment 
    races:
      __append:
        - protoss 
        - zerg

starcraft:
  first_release: 1998 
  races:
    - terrans
    

Rime 会在配置文件(不是 .custom 文件)的根节点中自动添加 __patch 指令:

# <config>.yaml 或 <config>.schema.yaml 的根节点
__patch: <config>.custom:/patch?

补丁文件:

# <config>.custom.yaml 
patch:
   key: value

等价于:

# <config>.yaml 或 <config>.schema.yaml 的根节点
__patch:
   key: value

<component>/import_preset: <config> 语法翻译为:

<component>:
   __include: <config>:/<component> 
  # 以下为输入方案覆盖定义的内容

参考:

扩展词库

注意事项

  • 词典无法多级导入,只有定义在 translator/dictionary 中的词典的导入语句会生效,解决了循环导入问题?

相关问题

参考配置

参考资料

Releases

No releases published

Packages

No packages published