天下武功,唯快不破。对于开发者和文字工作者来说,一款顺手的输入法就是最强的兵器。

长期以来,我一直在寻找一款既保护隐私、响应速度极快,又拥有强大词库的输入法。最终,Rime (小狼毫) 配合 雾凇拼音 (Rime-Ice) 的方案成为了我的最终选择。

今天这篇教程,就来记录如何从零开始配置这套方案,并实现一个非常实用的功能:全拼与双拼混合输入

为什么要折腾这个?

  1. 极速与隐私:Rime 是完全开源的本地输入法,没有广告,不上传用户隐私。
  2. 雾凇拼音:由 iDvel 维护的一套极佳的词库和配置方案,长期维护,词库质量极高,解决了 Rime 原生词库“拉胯”的问题。
  3. 全双混输:双拼能极大提高打字效率,但难免会有忘记键位或者想打全拼的时候。开启混输后,你可以主要用双拼,偶尔忘记了直接打全拼也能出字,体验极佳。

安装准备

首先,我们需要下载以下文件:

  1. 小狼毫 (Weasel): Rime 的 Windows 发行版。
  2. 雾凇拼音 (Rime-Ice): 核心配置方案。

根据指引安装好小狼毫后,在任务栏右下角找到“中”字图标,右键选择 「用户文件夹」,这会打开一个目录(通常是 %APPDATA%\Rime)。

部署雾凇拼音

  1. 解压下载好的 雾凇拼音 ZIP 包。
  2. 将解压出来的所有文件(包含 rime_ice.schema.yaml, default.yaml 等),全部复制并覆盖到上一步打开的 Rime 用户文件夹中。
  3. 右键任务栏输入法图标,选择 「重新部署」

此时,你已经拥有了一个拥有强大词库的全拼输入法了。

开启双拼方案

雾凇拼音自带了多种双拼方案(小鹤、自然码、微软等)。这里以小鹤双拼为例。

我们需要创建一个定制文件来启用它(千万不要直接修改 default.yaml,因为更新会覆盖)。

在 Rime 用户文件夹下,新建一个文件 double_pinyin_flypy.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
# double_pinyin_flypy.custom.yaml
patch:

# 双拼不转换为全拼编码
translator/preedit_format: []

# 在 engine/filters 插入长词优先的 Lua
engine/filters:
- lua_filter@*corrector
- reverse_lookup_filter@radical_reverse_lookup
- lua_filter@*autocap_filter
- lua_filter@*pin_cand_filter
- lua_filter@*long_word_filter # 增加长词优先
- lua_filter@*reduce_english_filter
- simplifier@emoji
- simplifier@traditionalize
- lua_filter@*search@radical_pinyin
- uniquifier

# 长词优先设置为提升 10 个词到第 1 个位置
long_word_filter:
count: 10
idx: 1

# xform 变形改为 derive 派生
speller/algebra:
- derive/^([jqxy])u$/$1v/
- derive/^([aoe])([ioun])$/$1$1$2/
- derive/^([aoe])(ng)?$/$1$1$2/
- derive/iu$/Ⓠ/
- derive/(.)ei$/$1Ⓦ/
- derive/uan$/Ⓡ/
- derive/[uv]e$/Ⓣ/
- derive/un$/Ⓨ/
- derive/^sh/Ⓤ/
- derive/^ch/Ⓘ/
- derive/^zh/Ⓥ/
- derive/uo$/Ⓞ/
- derive/ie$/Ⓟ/
- derive/(.)i?ong$/$1Ⓢ/
- derive/ing$|uai$/Ⓚ/
- derive/(.)ai$/$1Ⓓ/
- derive/(.)en$/$1Ⓕ/
- derive/(.)eng$/$1Ⓖ/
- derive/[iu]ang$/Ⓛ/
- derive/(.)ang$/$1Ⓗ/
- derive/ian$/Ⓜ/
- derive/(.)an$/$1Ⓙ/
- derive/(.)ou$/$1Ⓩ/
- derive/[iu]a$/Ⓧ/
- derive/iao$/Ⓝ/
- derive/(.)ao$/$1Ⓒ/
- derive/ui$/Ⓥ/
- derive/in$/Ⓑ/
- xlit/ⓆⓌⓇⓉⓎⓊⒾⓄⓅⓈⒹⒻⒼⒽⒿⓀⓁⓏⓍⒸⓋⒷⓃⓂ/qwrtyuiopsdfghjklzxcvbnm/

效果展示

补充:注入灵魂——开启语言模型

配置完上面这些,你的输入法已经很好用了,但可能在打长句子时还不够“聪明”。为了解决这个问题,我们需要开启 Rime 的 语言模型 (Language Model) 支持。它能根据上下文概率自动优化候选词排序,效果堪比手机输入法。

下载语言模型文件

Rime 的语言模型文件较大,通常不包含在默认安装包里,需要手动下载。

  • 下载地址Rime 语言模型库
    • 文件名:wanxiang-lts-zh-hans.gram
  • 存放位置:将下载好的文件直接放入你的 Rime 用户文件夹

在方案中启用

我们需要在双拼方案中告诉 Rime:“使用这个模型来帮我纠错。”

在用户文件夹创建新文件 rime_ice.custom.yaml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#rime_ice.custom.yaml
__include: octagram #启用语法模型
#语法模型
octagram:
__patch:
grammar:
language: wanxiang-lts-zh-hans
collocation_max_length: 8 #命中的最长词组
collocation_min_length: 2 #命中的最短词组,搭配词频健全的词库时候应当最小值设为3避开2字高频词
collocation_penalty: -10 #默认-12 对常见搭配词组施加的惩罚值。较高的负值会降低这些搭配被选中的概率,防止过于频繁地出现某些固定搭配。
non_collocation_penalty: -17 #默认-12 对非搭配词组施加的惩罚值。较高的负值会降低非搭配词组被选中的概率,避免不合逻辑或不常见的词组组合。
weak_collocation_penalty: -24 #默认-24 对弱搭配词组施加的惩罚值。保持默认值通常是为了有效过滤掉不太常见但仍然合理的词组组合。
rear_penalty: -18 #默认-18 对词组中后续词语的位置施加的惩罚值。较高的负值会降低某些词语在句子后部出现的概率,防止句子结构不自然。
translator/contextual_suggestions: false
translator/max_homophones: 5
translator/max_homographs: 5

颜值与习惯微调 (进阶配置)

调整候选词数量

现在的屏幕都很宽,默认 5 个候选词可能有点少。如果你想一眼看到更多备选字,可以修改

1
2
3
4
5
6
7
8
9
10
# default.yaml
......

# 菜单
menu:
page_size: 5 # 候选词个数
# alternative_select_labels: [ ①, ②, ③, ④, ⑤, ⑥, ⑦, ⑧, ⑨, ⑩ ] # 修改候选项标签
# alternative_select_keys: ASDFGHJKL # 如编码字符占用数字键,则需另设选字键(注意在雾凇中,大写字母也作为编码了)
......

特定软件自动英文

作为程序员,我们在使用 VS Code、终端或者玩游戏时,通常希望输入法默认是英文状态,避免敲代码时频繁切换。小狼毫可以完美实现这个功能。

编辑 weasel.custom.yaml,添加 app_options 配置:
Tips: 在任务管理器中右键进程 -> 打开文件位置,即可看到准确的 exe 文件名。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# weasel.custom.yaml
patch:
# ... (保留上面的 style 配置) ...

# 设定特定软件的默认状态
# ascii_mode: true (默认英文)
# ascii_mode: false (默认中文)
"app_options":
code.exe: # VS Code
ascii_mode: true
idea64.exe: # IntelliJ IDEA
ascii_mode: true
cmd.exe: # CMD
ascii_mode: true
WindowsTerminal.exe: # Windows Terminal
ascii_mode: true
csgo.exe: # 游戏示例
ascii_mode: true