Featured image of post 我的rime:打造多端同步的本地输入法

我的rime:打造多端同步的本地输入法

利用rclone和云盘,构建一套多端统一的输入法体验

身边的人总是提到,为什么我上一秒提到的东西,马上就出现在了相关搜索中呢?一个很大的可能性就是你的输入法暴露了。有研究指出1,目前市面上许多输入法都存在安全隐私漏洞。输入法作为我们平时用到最多的系统级应用,我不想自己的隐私被其泄露。所以,我寻找到了一款纯本地的全平台输入法——rime输入法2。它的优势就是简洁、无广告、不联网,不过对应的缺点就是没有云输入,一些比较新的词不好打出来,还有就是配置比较麻烦。

然而,我们可以通过使用别人预先设计好的配置来缓解这个问题。我选择了雾凇拼音3这个开源的方案来实现,它的优势就是自己维护了一套常用的词库,同时配置好了一些默认的输入的方案,我就在它的方案上进行优化,打造一套属于自己的输入体验。

由于我现在输入的方式是小鹤双拼,所以我的方案也全部是基于双拼打造的,全拼的话可以参考雾凇拼音的文档来配置。(在这强烈安利双拼的输入方式,学习成本不高但收益很高,能很大程度的改善你输入的体验👍)

# 基本配置

rime输入法通过.yaml文件来管理配置,并支持以patch的形式对其进行修改。所以,我们只需要编写*.custom.yaml文件就可以在别人的框架上构建自己的输入法了。由于配置文件在全端都是通用的,这里就先介绍共同的配置,每个平台独立的配置在后面再介绍。

rime的配置入口是default.yaml,所以我们先从它开始修改。创建default.custom.yaml,并填入下面的内容:

1
2
3
4
5
6
7
patch:
  schema_list:
    - schema: double_pinyin_flypy
    - schema: rime_ice
  menu/page_size: 7
  ascii_composer/switch_key/Shift_L: commit_code
  ascii_composer/switch_key/Shift_R: clear

我们首先选择了需要用到的两个方案double_pinyin_flypyrime_ice,分别是小鹤双拼和全拼,这里加入全拼是避免别人使用我电脑时不会使用所预留的。menu/page_size指定了候选词的个数,最后两个则是指定了左右Shift键的功能。

由于我们使用的是双拼,还需要修改“部件拆字”功能中的设置4。创建radical_pinyin.custom.yaml,填入下面的内容:

1
2
3
4
patch:
  # 修改为小鹤双拼的拼写派生规则,因为不在同一个文件了,前面要加上文件名
  speller/algebra:
    __include: radical_pinyin.schema.yaml:/algebra_flypy

同样,“拼写派生"功能也需要修改。创建melt_eng.custom.yaml文件,填入下面的内容:

1
2
3
4
patch:
  # 修改为小鹤双拼的拼写派生规则,因为不在同一个文件了,前面要加上文件名
  speller/algebra:
    __include: melt_eng.schema.yaml:/algebra_flypy

这样就配置完成了,还是很简单的。

同步的话,我同样使用的是跨平台的软件rclone,如果要使用它,需要先配置好远端。

通过执行rclone config并按照指示添加即可。之后,我分别介绍每个平台的具体配置和同步设置。

# 详细配置

# Win

win下的客户端叫小狼毫,下载安装好后就可以进行配置了。配置目录为%APPDATA%\Rime,我直接将里面的文件清空,然后使用git将雾凇拼音的仓库整个克隆进来。接着将上面“基本配置”中提到的三个文件创建好。由于默认的皮肤我不是很喜欢,所以我找了一个微软拼音的皮肤来使用。

创建weasel.custom.yaml并填入下面的内容:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
patch:
  preset_color_schemes:
    microsoft_sim:
      name: 仿微软输入法
      author: plutotree
      back_color: 0xF4F4F4
      border_color: 0xDCDCDC
      text_color: 0x000000
      hilited_text_color: 0xF4F4F4
      hilited_back_color: 0xFFD8A6
      hilited_candidate_text_color: 0x000000
      hilited_candidate_back_color: 0xFFD8A6
      candidate_text_color: 0x000000
      comment_text_color: 0x888888

  style:
    color_scheme: microsoft_sim
    label_format: "%s"
    font_face: "微软雅黑"
    font_point: 12
    horizontal: true
    inline_preedit: true
    layout:
      min_width: 140
      min_height: 0
      border_width: 1
      border_height: 1
      margin_x: 9
      margin_y: 9
      spacing: 9
      candidate_spacing: 20
      hilite_spacing: 7
      hilite_padding: 8
      round_corner: 0

接下来需要配置installation.yaml,我们主要修改里面的installation_id,这是同步文件夹中的名称,默认是一串UUID,但是这不方便我们同步,建议将其修改成便于操作的名称。

这样我们就配置好了rime输入法,接下来只需要将配置目录下的sync文件夹同步就好了。

同步的工具rclone在之前已经设置好了,我这里编写了一个cmd脚本来自动执行备份任务。使用时记得修改本地和远端的地址:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
@echo off

set rime_path="D:\Program Files (x86)\Rime\weasel-0.16.1\WeaselDeployer.exe"
set remote_path=a1:\rime_sync
set local_path=C:\Users\luobo\AppData\Roaming\Rime
set sync_path=%local_path%\sync
set device_name=lab-Win

echo 更新输入法词库
cd /d %local_path%
git pull
%rime_path% /deploy
echo 同步输入法词库中...
%rime_path% /sync
rclone sync %sync_path%\%device_name% %remote_path%\%device_name% -P
echo 下载远端词库
rclone sync %remote_path% %sync_path% -P --exclude %device_name%/**

# Android

安卓端的应用是fcitx5-android5,下载软件本体和rime插件后就可以进行配置了。安卓端的配置文件位于/sdcard/Android/data/org.fcitx.fcitx5.android/files/data/rime,我们直接将电脑端的配置文件复制进去就可以了,需要注意的是,installation.yaml里面的installation_id要改成不同的值。

同步的话,rclone并没有官方的安卓客户端。不过,我们可以使用termux——一款运行于Android 系统的开源终端模拟器6,并在里面安装rclone来使用。

下载并安装好后,首先进行换源:

1
2
sed -i 's@^\(deb.*stable main\)$@#\1\ndeb https://mirrors.tuna.tsinghua.edu.cn/termux/apt/termux-main stable main@' $PREFIX/etc/apt/sources.list
apt update && apt upgrade

之后安装rclone

1
apt install rclone

⚠由于安卓的安全性设置,普通应用是无权访问别的应用目录下的文件。所以,我们需要给予root权限(或者使用别的有权限的应用,我没有试过)

我这里同样是通过脚本来实现自动同步:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
#!/bin/sh

export PATH="/data/data/com.termux/files/usr/bin:$PATH"
CONFIG_PATH="/data/data/com.termux/files/home/.config/rclone/rclone.conf"
RIME_PATH="/sdcard/Android/data/org.fcitx.fcitx5.android/files/data/rime/sync"
REMOTE_PATH="a1:/rime_sync"
LOCAL_FOLDER="K50U-Android"

echo "download..."
rclone sync $REMOTE_PATH $RIME_PATH -P --exclude $LOCAL_FOLDER/** --config $CONFIG_PATH
echo "upload..."
rclone sync $RIME_PATH/$LOCAL_FOLDER $REMOTE_PATH/$LOCAL_FOLDER -P --config $CONFIG_PATH

这里由于我们是使用root身份来执行的,所以需要额外设置PATH并手动指定配置文件的路径

# 体验

日常使用rime输入法已经有大半年了,测试下来与云输入法基本没有什么区别,一些比较新的词打一遍也能被词库学习到。配合上多端同步,使用还是非常方便的。此外,雾凇拼音还内置了一些便捷功能,例如:

  • symbols:全拼 v 开头、双拼大写 V 开头
  • 部件拆字的反查:uU 开头,反查时前缀会消失影响打英文所以设定为两个字母,或可改成一个非字母符号。
  • 部件拆字的辅码:` 触发。
  • Unicode:大写 U 开头,如 U62fc 得到「拼」。
  • 数字、金额大写:大写 R 开头,如 R1234 得到「一千二百三十四、壹仟贰佰叁拾肆元整」。
  • 农历指定日期:大写 N 开头,如 N20240210 得到「二〇二四年正月初一」。

如果是比较在乎个人隐私的用户,我是比较推荐使用这样一款不联网的本地输入法的。

# 参考文献