打磨真正属于自己的输入法-RIME

很久之前就发现了 RIME 这个输入法,但因为在 windows 下的种种不便,把玩了一段时间后终于还是将之打入箱底。近期由于换上了 mac 作为主力开发机,于是又将其从箱底翻出,仔细把玩打磨一段时间之后已经十分跟手了,于是乎在这里记录一下打磨过程。

简介

RIME,全称是中州韵输入法引擎,是由佛振先生开发的跨平台开源输入法。

它在不同平台上有不同的名字:

  • Windows:小狼毫 Weasel
  • Mac OS X: 鼠须管 Squirrel
  • Linux:ibus-rime or fcitx-rime

其内置的输入方案包括

  • 朙月拼音
  • 朙月拼音 语句流
  • 朙月拼音 简化字模式
  • 朙月拼音 臺灣正體模式
  • 地球拼音 dì qiú pīn yīn
  • 注音
  • 注音 臺灣正體模式
  • 粵拼
  • 倉頡五代
  • 倉頡 快打模式
  • 速成
  • 五笔86
  • 五笔拼音混合輸入
  • 自然碼雙拼
  • 微軟雙拼
  • 智能ABC雙拼
  • 小鶴雙拼
  • 吳語上海話(新派)
  • 吳語上海話(老派)
  • 中古漢語三拼
  • 中古漢語全拼
  • X-SAMPA 國際音標
  • emoji表情

再由于其强大的可定制性,也有许多爱好者为其制作了如下输入方案

  • 英文
  • 日语
  • 山人全息码
  • ……

它也集成了许多好看的主题,当然你也可以自定义自己喜欢的配色主题。

rime_themes

安装

前往下载地址选择对应的版本下载,Mac用户选择鼠须管 Squirrel即可。

下载完成之后,解压zip压缩包,然后打开Squirrel-versioncode.pkg按步骤安装即可。

使用

  1. Mac用户在输入源中添加鼠须管
  2. ⌘ + Space切换输入法到鼠须管
  3. 按下Ctrl + `,依次选择 2、4 切换到简体输入
  4. Enjoy it!

自定义

点击右上角输入法按钮,选择用户设定,可以看到所有鼠须管的配置文件。鼠须管的配置文件都是yaml格式的,我们如果想要自定义,可以新建一个*.custom.yaml对其进行修改,这样可以防止更新程序的时候修改内容被覆盖,也方便同步。

输入方案

新建一个default.custom.yaml文件,将如下内容复制进去,然后根据自己的需求注释或者去掉注释即可。在完成之后,不要忘记重新部署一下,之后就可以使用Ctrl + `切换输入方案了。

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
patch:
schema_list:
- schema: luna_pinyin # 朙月拼音
- schema: luna_pinyin_fluency # 朙月拼音 语句流
# - schema: luna_pinyin_simp # 朙月拼音 简化字模式
# - schema: luna_pinyin_tw # 朙月拼音 臺灣正體模式
- schema: terra_pinyin # 地球拼音 dì qiú pīn yīn
# - schema: bopomofo # 注音
# - schema: bopomofo_tw # 注音 臺灣正體模式
# - schema: jyutping # 粵拼
# - schema: cangjie5 # 倉頡五代
# - schema: cangjie5_express # 倉頡 快打模式
# - schema: quick5 # 速成
# - schema: wubi86 # 五笔86
- schema: wubi_pinyin # 五笔拼音混合輸入
# - schema: double_pinyin # 自然碼雙拼
# - schema: double_pinyin_mspy # 微軟雙拼
# - schema: double_pinyin_abc # 智能ABC雙拼
# - schema: double_pinyin_flypy # 小鶴雙拼
# - schema: wugniu # 吳語上海話(新派)
# - schema: wugniu_lopha # 吳語上海話(老派)
# - schema: sampheng # 中古漢語三拼
# - schema: zyenpheng # 中古漢語全拼
# - schema: ipa_xsampa # X-SAMPA 國際音標
- schema: emoji # emoji表情

外观

新建一个squirrel.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
# 適用於【鼠鬚管】0.9.13+
# 位置:~/Library/Rime/squirrel.custom.yaml
# 用法:想要哪項生效,就刪去該行行首的#字符,但注意保留用於縮進的空格

patch:
# us_keyboard_layout: true # 鍵盤選項:應用美式鍵盤佈局
# show_notifications_when: growl_is_running # 狀態通知,默認裝有Growl時顯示,也可設爲全開(always)全關(never)
# style/horizontal: true # 候選窗横向顯示
# style/inline_preedit: false # 非內嵌編碼行
# style/font_face: "儷黑 Pro" # 我喜歡的字體名稱
# style/font_point: 21 # 字號
# style/corner_radius: 10 # 窗口圓角半徑
# style/border_height: 0 # 窗口邊界高度,大於圓角半徑才有效果
# style/border_width: 0 # 窗口邊界寬度,大於圓角半徑才有效果
# style/color_scheme: luna # 選擇配色方案

# 註:預設的配色方案及代碼(指定爲 style/color_scheme )
# 碧水 - aqua
# 青天 - azure
# 明月 - luna
# 墨池 - ink
# 孤寺 - lost_temple
# 暗堂 - dark_temple
# 星際我爭霸 - starcraft
# 谷歌 - google

主题

如上一部分,只能设置默认的主题。虽然默认的主题也挺不错的,但是我们也可以定制自定义的主题。

还是在squirrel.custom.yaml中,在刚刚加入的内容后面加入如下内容

1
2
3
4
5
6
7
8
9
10
11
preset_color_schemes/textflow:
author: "name <name@gmail.com>"
back_color: 0xFFFFFF #背景
border_color: 0xE0B693 #边框
candidate_text_color: 0x000000 #非第一候选项
hilited_back_color: 0xEBECED #拼音串高亮背景
hilited_candidate_back_color: 0xFFFFFF #第一候选项背景
hilited_candidate_text_color: 0xF57C75 #第一候选项
hilited_text_color: 0xFF6666 #拼音串高亮
name: Textflow
text_color: 0x000000 #拼音串

然后启用这个主题就可以了

如果你想要更多的配色,可以参照RIME吧:配色方案专帖

生僻字乱码

生僻字乱码是因为默认字库中不含生僻字所导致的,解决方案就是为其设置字库齐全的备用字体。

一般的选择是「花园明朝」,下载下来安装好之后,将 外观 这一步中的

1
style/font_face: "儷黑 Pro"    # 我喜歡的字體名稱

改为

1
style/font_face: "PingFang SC,HanaMinA"    # 我喜歡的字體名稱

然后重新部署即可

根据程序切换中英文

鼠须管 0.9.9 之后开始支持在指定的应用程序中设定输入法的初始状态。

如在

  • 终端 TerminaliTerm2
  • 编辑器 sublimeatom
  • 启动工具 QuickSilverAlfred

中我们很少会用到中文,于是我们可能设置鼠须管在这种程序中默认英文输入

如果想要设置应用中输入法的初始状态,我们首先要查看应用的Info.plist文件得到该应用的Bundle Identifier,通常是形如com.apple.Xcode的字符串

例如,要在Xcode中默认英文输入,又要在Alfred中恢复中文输入,可如下设定:

1
2
3
4
5
# example squirrel.custom.yaml
patch:
app_options/com.apple.Xcode:
ascii_mode: true
app_options/com.alfredapp.Alfred: {}

emoji表情以及特殊符号

有时候我们会有输入emoji表情的需求,但仅仅只是开启了emoji输入方案的话,我们每次都要切换输入方案才可以输入emoji表情,还是很不方便的。如果可以直接在一种输入方案中加入emoji表情输入就更好了

其实可以做到,你只需要这样

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# luna_pinyin.custom.yaml
#
# 在【朙月拼音】裏使用Emoji表情
#
# 保存到Rime用戶文件夾後,重新部署生效
# ~/.config/ibus/rime (linux)
# ~/Library/Rime (macos)
# %APPDATA%\Rime (windows)
#
# 如果目標文件已經包含其他修改內容,只需按照縮進合併 patch: 以下的部分
#

patch:
schema/dependencies:
- emoji
reverse_lookup:
dictionary: emoji
enable_completion: false
prefix: "`"
tips: 〔表情〕

以上我们就完成了emoji表情输入的设置,现在输入一个`加随意一些字母来看看效果吧

但是仅仅表情还不够,我们有时候需要输入形如之类的特殊符号,查看symbols.yaml我们可以发现及其丰富的特殊符号,但是如何才能使用它们呢?

只需要在我们上面已经添加了emoji表情相关的配置文件末尾再加上如下配置即可

1
2
3
4
5
6
7
8
punctuator:
import_preset: symbols

recognizer:
import_preset: default
patterns:
reverse_lookup: "`[a-z]*'?$"
punct: "^/([a-z]+|[0-9]0?)$"

大功告成,重新部署之后使用/lm看看吧,更多符号输入方式请查看symbols.yaml

同步

做了这么多的个性化设置之后,其实输入法应该已经很符合自己的心意了。但是如果我们更换了一台设备或者需要在其它设备上保持同样的习惯的话怎么办呢?我们使用这么久已经养成了的个人词库可以在其它设备上使用么?

当然可以!

RIME是支持同步的,但是它的同步方式和市面上主流的输入法不一样,需要我们自己使用同步网盘或者U盘来同步。

推荐国内用户使用坚果云作为同步盘使用,坚果云拥有多平台客户端且在墙内使用情况良好。若肉身在墙外则推荐DropBox

1. 设定同步位置

默认情况下,个人词库和配置都将备份到RIME用户文件夹\sync\UUID这里。如果使用网盘或者U盘在不同机器、系统之间同步,则需要设定同步的目标文件夹,此时这些文件都会备份到设定好的目录。

直接編輯用戶文件夾下的installation.yaml,添加:

1
sync_dir: 'D:\Dropbox\RimeSync'

又如 Mac 上添加:

1
sync_dir: '/Users/fred/Dropbox/RimeSync'

又如使用 USB 存儲來同步:(真實案例)

1
sync_dir: '/Volumes/USBDRIVE/RimeSync'

2. 同步标识

默认情况下,RIME会为随机生成每一个UUID作为标识。这个UUID会被用来区分來自不同机器/系统的个人词库和设置。

如果你想要让其更加便于管理,那么你可以设置一个有意义的ID用于区分,直接编辑installation.yaml中如下所示的内容即可

1
installation_id: 'loshine-macbook'

注意:此ID不能使用非法字符,建议只用小写字母、数字、横线和下划线

我的成品

成品效果演示

rime

几个配置文件

  • squirrel.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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# 適用於【鼠鬚管】0.9.13+
# 位置:~/Library/Rime/squirrel.custom.yaml
# 用法:想要哪項生效,就刪去該行行首的#字符,但注意保留用於縮進的空格

patch:
# us_keyboard_layout: true # 鍵盤選項:應用美式鍵盤佈局
show_notifications_when: appropriate # 狀態通知,默認裝有Growl時顯示,也可設爲全開(always)全關(never)
# style/horizontal: true # 候選窗横向顯示
# style/inline_preedit: false # 非內嵌編碼行
# style/font_face: "PingFang SC,HanaMinA" # 我喜歡的字體名稱
style/font_point: 18 # 字號
style/corner_radius: 2 # 窗口圓角半徑
style/border_height: 7 # 窗口邊界高度,大於圓角半徑才有效果
style/border_width: 7 # 窗口邊界寬度,大於圓角半徑才有效果
style/color_scheme: luna # 選擇配色方案

# 註:預設的配色方案及代碼(指定爲 style/color_scheme )
# 碧水 - aqua
# 青天 - azure
# 明月 - luna
# 墨池 - ink
# 孤寺 - lost_temple
# 暗堂 - dark_temple
# 星際我爭霸 - starcraft
# 谷歌 - google
preset_color_schemes/textflow:
author: "name <name@gmail.com>"
back_color: 0xFFFFFF #背景
border_color: 0xE0B693 #边框
candidate_text_color: 0x000000 #非第一候选项
hilited_back_color: 0xEBECED #拼音串高亮背景
hilited_candidate_back_color: 0xFFFFFF #第一候选项背景
hilited_candidate_text_color: 0xF57C75 #第一候选项
hilited_text_color: 0xFF6666 #拼音串高亮
name: Textflow
text_color: 0x000000 #拼音串

# Xcode
app_options/com.apple.Xcode:
ascii_mode: true
# alfred
app_options/com.alfredapp.Alfred:
ascii_mode: true
# Android Studio
app_options/com.google.android.studio:
ascii_mode: true
# atom
app_options/com.github.atom:
ascii_mode: true
  • default.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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
patch:
schema_list:
- schema: luna_pinyin # 朙月拼音
- schema: luna_pinyin_fluency # 朙月拼音 语句流
# - schema: luna_pinyin_simp # 朙月拼音 简化字模式
# - schema: luna_pinyin_tw # 朙月拼音 臺灣正體模式
- schema: terra_pinyin # 地球拼音 dì qiú pīn yīn
# - schema: bopomofo # 注音
# - schema: bopomofo_tw # 注音 臺灣正體模式
# - schema: jyutping # 粵拼
# - schema: cangjie5 # 倉頡五代
# - schema: cangjie5_express # 倉頡 快打模式
# - schema: quick5 # 速成
# - schema: wubi86 # 五笔86
- schema: wubi_pinyin # 五笔拼音混合輸入
# - schema: double_pinyin # 自然碼雙拼
# - schema: double_pinyin_mspy # 微軟雙拼
# - schema: double_pinyin_abc # 智能ABC雙拼
# - schema: double_pinyin_flypy # 小鶴雙拼
# - schema: wugniu # 吳語上海話(新派)
# - schema: wugniu_lopha # 吳語上海話(老派)
# - schema: sampheng # 中古漢語三拼
# - schema: zyenpheng # 中古漢語全拼
# - schema: ipa_xsampa # X-SAMPA 國際音標
- schema: emoji # emoji表情
{% endhighlight %}
* terra_pinyin.custom.yaml

{% highlight yaml %}
# luna_pinyin.custom.yaml
#
# 在【地球拼音】裏使用Emoji表情
#
# 保存到Rime用戶文件夾後,重新部署生效
# ~/.config/ibus/rime (linux)
# ~/Library/Rime (macos)
# %APPDATA%\Rime (windows)
#
# 如果目標文件已經包含其他修改內容,只需按照縮進合併 patch: 以下的部分
#

patch:
schema/dependencies:
- emoji
# abc_segmentor/extra_tags:
# - reverse_lookup
reverse_lookup:
dictionary: emoji
enable_completion: false
prefix: "`"
tips: 〔表情〕

punctuator:
import_preset: symbols

recognizer:
import_preset: default
patterns:
reverse_lookup: "`[a-z]*'?$"
punct: "^/([a-z]+|[0-9]0?)$"
  • installation.yaml
1
2
3
4
5
6
7
distribution_code_name: Squirrel
distribution_name: "鼠鬚管"
distribution_version: 0.9.26.1
install_time: "Mon Aug 3 15:24:12 2015"
installation_id: "loshine-macbook"
rime_version: 1.2.9
sync_dir: '/Users/Loshine/我的坚果云/RimeSync'