GoCalf Calf 的自留地 · 昙花一现

Rime 中州韵输入法引擎

基本信息

RIME | 中州韻輸入法引擎

客户端:

现成的配置方案:

  • ℞ iDvel/rime-ice: Rime 配置:雾凇拼音 | 长期维护的简体词库
    • iDvel/rime-ice
      iDvel/rime-ice星标分支数最近提交最新发行版发行日期

      徽章图片由 Shields 直接提供;没有图片时仍可访问仓库链接。

    • 雾凇拼音提供了一套开箱即用的完整配置,包含输入方案(全拼、常见双拼)、长期维护的开源词库及各项扩展功能。

  • ℞ gaboolic/rime-frost: 白霜拼音:蒹葭苍苍,白露为霜
    • gaboolic/rime-frost
      gaboolic/rime-frost星标分支数最近提交最新发行版发行日期

      徽章图片由 Shields 直接提供;没有图片时仍可访问仓库链接。

    • 白霜拼音使用使用 745396750 字的高质量语料,进行分词,重新统计字频、词频,归一化,打造纯净、词频准确、智能的词库。白霜词库是目前 rime 方案下最好的开源词库,立志于打造不输于商业输入法的输入体验。

实际使用

注意 patch 的用法

CustomizationGuide · rime/home Wiki

一定一定注意 xxx.custom.yaml 里的 patch 是用来覆盖默认配置的,而不是追加的,所以如果要追加,需要把原来的配置也写一遍,或者把 key 写成 a/b/c 形式。

比如要自定义一个 color scheme,如果这样写(squirrel.custom.yaml):

yaml
patch:
  preset_color_schemes:
    my_scheme:
      background: '#000000'
      foreground: '#ffffff'

那么这个配置就只有 my_scheme,而没有其他的了,所以应该这样写:

yaml
patch:
  'preset_color_schemes/my_scheme':
    background: '#000000'
    foreground: '#ffffff'

⚠️ 注意:上边这个 preset_color_schemes 是一个 dictionary,不能用 preset_color_schemes/+ 这样的写法。类似的比如 punctuator/symbols 也是 dictionary,不能写 punctuator/symbols/+。Deploy 的时候会报错 “trying to append list to incompatible node type”.

本身是 list 的则可以用 + 来增加元素,如:

yaml
patch:
  'engine/filters/+':
    - lua_filter@*cn_en_spacer # 为中英混输词条(cn_en.dict.yaml)自动空格

管理配置

用「东风破」(plum)进行 Rime 配置管理。

rime/plum: 東風破 /plum/: Rime configuration manager and input schema repository

東風破 是 中州韻輸入法引擎 的配置管理工具。

bash
curl -fsSL https://raw.githubusercontent.com/rime/plum/master/rime-install | bash

这个操作会:

  1. 在执行命令的当前目录,安装 plum,在 ./plum(实际上就是 git clone --depth 1)。
  2. 直接更新 Rime 客户端的配置存储目录,安装一系列预设方案,即 preset-packages.conf 中的方案,目前有:
  • Essentials
  • prelude: 基礎配置 / the prelude package, providing Rime’s default settings
  • essay: 八股文 / a shared vocabulary and language model
  • Phonetic-based, Modern Standard Mandarin
  • luna-pinyin: 朙月拼音 / Pinyin input method for Traditional Chinese
  • terra-pinyin: 地球拼音 / School-taught Pinyin, with tone marks
  • bopomofo: 注音 / Zhuyin (aka. Bopomofo)
  • Shape-based
  • stroke: 五筆畫 / five strokes
  • cangjie: 倉頡輸入法 / Cangjie input method

「套装 packages」就是由 conf 文件定义的一组「配方 package」。「配方」又可以包含若干个「输入方案 ℞」或「Rime 配置 ℞」。

或者直接 clone 仓库:

bash
git clone --depth=1 https://github.com/rime/plum

如果要安装其他方案/配方:

bash
cd /path/to/plum/
# bash rime-install [--select] <套装或配方> [<套装或配方>...]
# 如:
bash rime-install gaboolic/rime-shuangpin-fuzhuma@master:recipes/full

安装之后,点 squirrel 里的 Deploy,重新部署一下,然后按 Ctrl + ` 呼出「方案选单」即可选择需要的方案。

想要删除一个方案,直接去配置目录的 default.custom.yaml(没有的话就自行创建),通过 patch.schema_list 控制需要保留哪些方案,在目录里把对应的配置文件删除,重新部署即可,如:

yaml
# default.custom.yaml
patch:
  schema_list:
    - schema: luna_pinyin_simp

Squirrel 样式配置

LEOYoon-Tsaw/Squirrel-Designer: Squirrel Theme Simulator

Rime 西米 for Squirrel

通过工具生成了 theme 设定代码,在 ~/Library/Rime 里找到 squirrel.custom.yaml(没有则自行创建),修改即可。

雾凇拼音

iDvel/rime-ice: Rime 配置:雾凇拼音 | 长期维护的简体词库

通过 plum 安装:

bash
bash rime-install iDvel/rime-ice:others/recipes/full

Recipes 里有:

  • full:全部文件
  • all_dicts:所有词库文件(包含下面三个)
  • cn_dicts: 拼音词库文件( cn_dicts/ 目录内所有文件)
  • en_dicts: 英文词库文件( en_dicts/ 目录内所有文件)
  • opencc: opencc( opencc/ 目录内所有文件)
  • config:schema=xxxx: 双拼补丁(会在 radical_pinyin.custom.yaml 和 melt_eng.custom.yaml 里将 speller/algebra 修改为对应的双拼拼写)
    • flypy: 小鹤双拼
    • mspy: 微软双拼
    • sougou: 搜狗双拼
    • double_pinyin: 自然码双拼
    • abc: 智能 ABC 双拼
    • ziguang: 紫光双拼

一些操作技巧

详见 dotfiles/rime/README.md

  • 数字的各种格式(汉字、人民币大写等):R<number>,如 R1234.5678。
  • 字母、数字的各种变体:v<alpha|digit>,如 va、v1。
  • 其他各种符号:v<>,如 vjt 各种箭头、vss 各种手势 emoji。
  • 拆字输入:uU<各部件拼音>,如 uUbuhao 得到 孬。
  • 以词定字:输入词组的拼音之后,按 [ 或 ] 上屏激活候选项的首字或尾字。
    • 快捷键通过 default.yaml 的 key_binder/select_first_character 和 key_binder/select_last_character 调整。
  • Unicode 字符:Unnnn(注意 U 要大写),如 U263a。
  • 输入当前日期、时间:rq sj xq dt ts。
  • 公历转阴历:N<YYYYMMDD>,如 N20240726 得到 二〇二四年六月廿一 或 甲辰年(龙)六月廿一。

设置中文和英文、数字之间自动加空格

如何在中英文混合输入情况下,输入后的英文单词前后自动加空格? · Issue #536 · iDvel/rime-ice

效果不太理想,想要类似于搜狗输入法里那样的效果。

搜狗输入法用户词库迁移

导出

打开搜狗输入法的设置窗口,点击「我的 → 词库设置 → 中文用户词库 → 导出」,得到词库备份文件,比如叫 搜狗词库备份_2024_07_26.bin。

转换

工具:nopdan/rose: IME User Dictionary Converter. 输入法用户词库转换工具

nopdan/rose
nopdan/rose星标分支数最近提交最新发行版发行日期

徽章图片由 Shields 直接提供;没有图片时仍可访问仓库链接。

直接去 releases 中下载最新的版本。注意要下载 rose.zip 即预先编译好的二进制程序,还要下载 data.zip(目前知道 v1.3.1 版本中有)。按照说明把 data.zip 解压到 rose 目录下。

bash
chmod +x rose-darwin-amd64
./rose-darwin-amd64 搜狗词库备份_2024_07_26.bin sogou_bak:rime sougou.dict.yaml

可以手动编辑生成的 yaml 文件,删除或调整一些词条。

调整 Rime 词库文件格式

rose 不会自动添加 Rime 词库文件的头部,所以需要手动添加,如:

yaml
---
name: sougou
version: '2024.07.26'
sort: by_weight
---

引用词库

把上边生成的 sougou.dict.yaml 放到 Rime 配置目录下,添加到当前词库的 import_tables 中,如:

yaml
import_tables:
  - sogou

Lua 脚本

四个的关键编程接口:

lua
function translator(input, seg, env)
  -- yield Candidate
end

function filter(input, env, cands)
  -- yield Candidate
end

function processor(key_event, env)
  -- return 0 -- kRejected
  -- return 1 -- kAccepted
  -- return 2 -- kNoop
end

function segmentor(segmentation, env)
  -- return true -- 交由下一个 segmentor 处理
  -- return false -- 终止 segmentors 处理流程
end

多端同步

Rime 客户端里「Sync user data」的同步逻辑是:

  • 历史行为数据(动态词频)是双向同步,自动合并
  • 用户自定义配置是单向同步,不会下载或合并

可能是因为如果配置文件发生冲突,就必须人工处理,而且不同设备不同系统的配置可能本来也不一样。

用 GitHub 同步配置文件(如 dotfiles/rime),内置 sync + 云存储(iCloud)同步行为数据。

Background: macOS 为主电脑(可能多台),iOS 为主移动端(可能多台),Windows 为辅电脑。

配置同步

配置文件放在 GitHub 仓库里做版本控制,dotfiles/rime at master · calfzhou/dotfiles。各端要手动拉取最新代码并部署。

macOS 的 Squirrel:可以直接把仓库目录软链到 ~/Library/Rime:

bash
ln -s $DOTFILES_HOME/rime ~/Library/Rime

Windows 的 Weasel:初次安装的时候可以选择数据的存储路径,直接选到仓库所在目录即可。如果已经安装了,也可以再把默认的数据目录改成仓库目录的软链。注意要把 build 等文件和目录从原本的数据目录添加到仓库目录中,否则切换后可能 Weasel 无法使用。

iOS 的元书输入法:通过 iCloud 进行同步,把配置文件放在 iCloud 里「元书输入法」目录(路径是 ~/Library/Mobile Documents/iCloud~com~ihsiao~apps~Hamster3/Documents)里的 RimeUserData 目录中(如雾凇拼音 RimeUserData/rime-ice/*);然后在元书输入法中执行「RIME 部署」,会读取 iCloud 里的配置文件并更新到应用文件目录中。参考 文件管理 » 复制 iCloud 中的元书方案文件 | 元书输入法。

也可以在元书输入法中点开「Wi-Fi 文件传输」,通过电脑浏览器访问,把电脑上的配置文件上传到手机 RimeUserData 目录中。

词频数据同步

在各端的 Rime 数据目录里,都会有一个 installation.yaml 文件,在文件中添加 sync_dir 字段,指向云存储的目录(否则会使用当前目录)。

iOS 上元书输入法只能访问属于他自己的目录,所以各端都迁就于此。在 iCloud Drive 里找到「元书输入法」目录,可以在里面创建一个目录比如叫 sync。该目录在 iOS 里的地址是 /private/var/mobile/Library/Mobile Documents/iCloud~com~ihsiao~apps~Hamster3/Documents/sync,在 macOS 里是 ~/Library/Mobile Documents/iCloud~com~ihsiao~apps~Hamster3/Documents/sync。

在元书输入法里进入 RIME 页面,点击同步文件路径,选择该目录。

如何通过 iCloud 同步 RIME 自造词? | 元书输入法

Windows 上安装 iCloud 客户端,然后找到 Hamster/sync 目录的路径,写到 installation.yaml 里。

installation.yaml 里自动会有 installation_id 字段(元书输入法可以在 RIME » 同步文件夹名称 处配置),值是一个 UUID,表示当前设备的唯一标识符。执行 Rime 的数据同步时,会在 sync_dir 目录下创建一个 installation_id 的子目录,存放当前设备的配置文件和词频数据。

Rime 同步的时候,会检查 sync_dir 目录下其他的子目录,如果其他子目录下也有对应的词频数据文件,会读取合并进来的。参考 多设备同步 » 用户词典迁移 | oh-my-rime输入法。可以把随机生成的 UUID 改成易懂的值,比如 mbp-1、mbp-2 等。

比如设备 A 的 installation_id 是 A,B 的 installation_id 是 B。设备 A 先同步,其词频数据文件是(sync_dir 目录下的)A/rime_ice.userdb.txt。设备 B 同步的时候会把 B/rime_ice.userdb.txt、A/rime_ice.userdb.txt 以及本地 Rime 数据目录里 rime_ice.userdb 目录里的信息都合并,然后写入 B/rime_ice.userdb.txt,并更新本地 Rime 数据目录里的 rime_ice.userdb。

其他

关于双拼

也许你该试试双拼输入法 - Hank’s Blog

推荐:小鹤双拼

评论需要 JavaScript。