Rime 探索记 1.0:皮肤设计和词库维护

中英文输入一直是我使用输入法的痛点,而近两年苹果多系统出现的输入法异常、词库异常问题,加重了这个问题。我和MacOS系统输入法的矛盾一触即发,终于到了不得不分手的日子。于是仔细和Claude探讨了找哪位项目当替代。

最终选择了 Rime 和Rime-ice https://github.com/iDvel/rime-ice

个人设置

我使用的拼音方案是小鹤双拼,所以在double_pinyin_flypy.custom.yaml维护一些常用的配置

__patch:
  - patch/+:
      translator/preedit_format: [] # 显示输入为非推导扩展的全拼内容,而是双拼键入字符
      menu:
        page_size: 8

这里用的是 __patch: - path/+:的列表写法,效果等价于最简单的 patch: 叶子路径: 值,但是- path/+: 可以在结构上区分开不同功能的补丁,也有类似 CSS 的级联覆盖功能的特点。

列表形式里每个 patch/+ 天然就是一个边界清晰的容器,装的所有 key 肯定是同一个来源加的。——Claude

皮肤自定义

皮肤设置位置:squirrel.yaml

preset_color_schemes:
  gray_blue:
      name: 灰蓝
      author: riza <[email protected]>
      # 默认使用 0xBBGGRR
      back_color: 0x665A4E
      # 设置同色的border,以拓展hilited块和border之间的空隙 
      border_color: 0x665A4E
      candidate_text_color: 0xC7C7C9
      comment_text_color: 0x847F7
      hilited_back_color: 0xD29d68
      hilited_candidate_text_color: 0xD8D8D8
      hilited_candidate_label_color: 0xD8D8D8
      hilited_comment_text_color: 0xE1C2B7
      candidate_list_layout: linear
      inline_preedit: ture                    # 单行显示,false双行显示
      candidate_format: "\u2005%c\u2005%@\u2005"    # 用 1/6 em 空格 U+2005 来控制编号 %c 和候选词 %@ 前后的空间。
      corner_radius: 4
      hilited_corner_radius: 6
      font_point: 16
      font_face: "Anthropic Sans Display,Glow Sans SC"
      label_color: 0x999999
      label_font_point: 14
      label_font_face: "Anthropic Sans Display,Glow Sans SC"
      comment_font_point: 14
      comment_font_face: "Fusion Pixel 12px Monospaced zh_hans"
 

配置同步

新建了一个项目仓库 Rime,把配置上传到 git repo ,然后用软链接的形式链接到~/Library/Rime 。这样可以定时同步自己的个人设置,到Git,再也不用担心电脑突然爆炸了。

词库管理 Cli rime-dict-cli

为传统苹果输入法所累,我一路又一路扮演着一个无力阻止一切的丈夫,自然也没有维护词库的习惯,所以词库维护要从0开始。我非常喜欢Ghostty有全局快捷键调出的功能,所以对我来说自建词库最好的入口,一是 PopClip 选中并添加到词库,二就是弹出终端窗口自己敲了。

最终面向的文件还是词库 txt ,命令做了极简化,可以 rimedict add <词语> <编码>

英文词库维护

一开始只知道有词库功能,所以只做了custom_phrase_double.txt 这个词库的积累功能。直到后来发现一些英文词语积累到词库后,再次输入后没有调用出来,于是开始探究原因……由于中文用户词库custom_phrase.txt这套机制设计初衷是"打拼音→出中文短语",编码必须是拼音,而纯英文词没有拼音可言,所以无法直接应用。

英文词库需要另起一个用户词库维护。可以在double_pinyin_flypy.custom.yaml添加配置如下,然后在 melt_eng_custom.txt 积累自己的英文词库。

# 手动开启 melt_eng 的用户词典,配合 melt_eng_custom.txt 种子文件添加自定义英文词
# db_class 沿用 custom_phrase/cn_en 同款 stabledb:每次部署直接从 txt 重新编译,
# 不用等 leveldb 用户词典的同步/学习机制,改完立刻生效。
  - patch/+:
      melt_eng/enable_user_dict: true
      melt_eng/user_dict: melt_eng_custom
      melt_eng/db_class: stabledb

参考资料

  1. https://zhaohongxuan.github.io/2024/03/20/most-powerful-input-method-rime/#%E8%BD%AF%E9%93%BE%E6%8E%A5%E5%AE%89%E8%A3%85

  2. https://pwa.sspai.com/post/109164鼠须管 Squirrel 皮肤配置指北(Morristin

  3. https://wallleap.gitbook.io/blog/ji-shu-za-tan/ge-ren-shu-ru-fa-tiao-jiao-zhi-rime

  4. https://github.com/jsonsuxing/allensu_squirrel_theme —— 不同配置字段的含义