雾凇拼音,功能齐全,词库体验良好,长期更新修订,仓库:iDvel/rime-ice
使用说明
备份后清空配置目录,将仓库所有文件复制粘贴进去就好了。
更新词库:词库每个月都会更新几次,更新时只需要将下面 3 个文件夹覆盖过去并重新部署即可。
cn_dicts
拼音相关词库en_dicts
英文相关词库opencc
Emoji
基本套路
- 简体 | 全拼 | 双拼
- 主要功能
- 简体字表、词库
- 词库修订
- 校对大量异形词、错别字、错误注音
方案设计
.
├── default.yaml # 一些全局设置
├── squirrel.yaml # 鼠须管的皮肤、默认中英设置
├── rime_ice.schema.yaml # 全拼方案
├── double_pinyin... # 双拼方案
├── rime_ice.dict.yaml # 挂载词库
├── cn_dicts/ # 词库目录
├── symbols_custom.yaml # 自定义的 symbols,包含标点符号设定
├── melt_eng.schema.yaml # 英文方案,作为次翻译器挂载到拼音方案
├── melt_eng.dict.yaml # 挂载词库
├── en_dicts/ # 词库目录
├── liangfen.schema.yaml # 两分方案,作为反查挂载到拼音方案
├── liangfen.dict.yaml # 两分词库
├── custom_phrase.txt # 自定义短语
├── opencc/ # 词语映射,Emoji
├── rime.lua # lua 脚本
└── zh-hans-t-essay-bgw.gram # 八股文
默认只支持了全拼、自然码双拼、小鹤双拼,其他双拼修改拼写设定即可。
小狼毫通过程序自带的 GUI 选择一个皮肤后就会默认生成 weasel.custom.yaml
文件。
英文方案与两分方案没有单独放入方案选单,只是作为功能挂载到拼音方案。
melt_eng 方案作为次翻译器,挂载到拼音方案,支持英文输入。
两分输入方案作为反查,挂载到拼音方案,支持拼字。
拼音和英文的词库文件较多,放入了文件夹里,让主目录清爽一些。
Lua 脚本中可配置的选项都提取出来了,「以词定字」在 default.custom.yaml
设定快捷键,剩下的「限制码长」「长词优先」「日期时间」等等可在方案文件中设定。
一些前缀功能的默认设置:
-
v 开头(仅全拼):输出一系列字符,这些字符在
symbols_custom.yaml
中定义。 -
u 开头(全拼)、大写 L 开头(双拼):两分拼字,具体拼字规则很简单,看一看
liangfen.dict.yaml
里的编码就大概能明白,一般是取第一个字与最后一个字。 -
大写 U 开头:Unicode 编码转字符,如
U62fc
得到「拼」。
还有其他一些小功能,基本都写了注释,可以查阅一遍自行修改,主要的两个配置文件是 default.custom.yaml
和对应的方案文件 *.schema.yaml
。
长期维护词库
因为没有找到一份比较好的词库,干脆自己维护一个。综合了几个不错的词库,精心调教了很多。
主要维护的词库:
8105
字表。base
基础词库。sogou
搜狗流行词。ext
扩展词库,小词库。tencent
扩展词库,大词库。- Emoji
维护内容主要是异形词、错别字的校对,错误注音的修正,缺失的常用词汇的增添,词频的调整。
欢迎在词库方面提 issue,我会及时更新修正。
词库的设计
Rime 自带的「朙月拼音·简化字」方案其实是繁体词库加上一个自动繁转简的设定,出词仍旧是经过 opencc 转换,用户词典中保存的输入历史还是繁体的。
简体用户推荐使用简体词库,引入一些第三方词库也比较方便,还可以避免 opencc 的少数转换错误,修订异形词时也只需要按照大陆简体标准修订。
字表与多音字
ext
和 tencent
词库没有注音。
对于没有编码的词库文件,Rime 会根据方案的字表进行自动注音。
当含有多音字的词组缺少编码字段时,自动注音程序会利用权重百分比高于 5% 的读音进行组合、生成全部可能的注音。—— Rime 输入方案设计书
遵循 Rime 的设计,让常用多音字之间的权重比例满足至少 5:100,生僻的多音字低于 5:100,不参与自动注音,放到 base 中手动注音。
多音字注音的问题,例如 ext 词库中未注音的「十三朝古都」,用 ……chao……du 或 ……zhao……dou 都可以打出来,不过会出现意料之外的候选项的概率比较小。
一些可能产生困扰的,如「会计kuai ji」和「hui ji」冲突很多,如「奇迹qi ji」用「ji ji」也能打出来。这样含有不太适合被自动注音的多音字,放到 base 中手动注音。
两字词
两字词统一放到 base.dict.yaml
中,便于平时修订和调频。
因为两字词的排序基本决定了词库舒适度,重码较多,所以都加上注音和权重,并大量增删和调频。
扩展词库的两字词都没有自动加入,平时扩充时都是肉眼检查后再添加。
扩展词库
主词库缺少了很多常用小短句,挂载这些扩展词库后,体验会好很多。
sogou.dict.yaml
搜狗流行词,一般每个工作日都会更新一点。
ext.dict.yaml
一些第三方小词库及平时随手的扩充。
tencent.dict.yaml
只取了腾讯词向量的一百万个词条,算是比较平衡的选择,
扩展的词库默认权重为 100,因为不写权重时,Rime 默认给到的权重比 1 还小,输入长句时,初始的候选项有很大可能会被意料之外的两字词及单字挤占。比如想输入「抽根烟 / 再看看」,当「抽根烟」这个词没有权重时,默认候选项是「抽根 / 淹在 / 看看」。
新手指引
macOS 与 Windows 发行版:
-
鼠须管 Squirrel —— 官方 macOS 发行版
-
LEOYoon-Tsaw/squirrel —— 鼠须管主要维护者的 fork,相当于 Beta 版了。
-
小狼毫 Weasel —— 官方 Windows 发行版,很久不更新了。。。
-
fxliang/weasel —— Windows 推荐用这个。
一些参考、文档、教程:
还有很多,已经很全面了,下面的只是结合本配置随便写一点。
配置中基本都写了注释,如果只做小修改,通读一遍即可。
目录
-
配置目录:
-
鼠须管:
~/Library/Rime
-
小狼毫:
%APPDATA%\Rime
-
-
共享目录:
- 鼠须管:
/Library/Input Methods/Squirrel.app/Contents/SharedSupport
- 小狼毫:
<安装目录>\data
- 鼠须管:
共享目录提供了一些自带的方案及各项默认配置,可以直接引用。
比如 opencc 简繁转换的配置可以直接书写 s2t.json
,因为共享目录里已经有相关文件了。
Tab 与空格
Rime 的 YAML 配置文件需要严格的缩进,只能用空格,不能用 Tab。
但是词条之间是用 Tab 分割的:
拼音 pin yin 1234
拼音<Tab>pin<Space>yin<Tab>1234
经常编辑词库的话,可以设置 VSCode 为默认 Tab 缩进,在 .vscode/setting.json
中写入,参考 VSCode #69011:
{
// Configure editor settings to be overridden for [yaml] language.
"[yaml]": {
"editor.insertSpaces": false,
"editor.tabSize": 4,
"editor.detectIndentation": false,
},
}
配置的引用
Rime 的配置可以很灵活复杂,比如设置一个快捷键:
- 可以在方案文件
xxx.schema.yaml
中设定; - 也可以在方案的补丁文件
xxx.custom.yaml
中设定; - 也可以写在
default.yaml
或defaut.custom.yaml
中,再在方案中引用; - 也可以额外创建一个 YAML 文件,再在方案中中引用。
比如我想让所有方案共用同一套快捷键,不用写很多份。写在 default
中就比较合适,然后再在方案中进行引用:
# 1. 在 default.yaml 或 default.custom.yaml 中配置
key_binder:
bindings:
# ... 相关快捷键配置
##############################
# 2. 在多个方案 xxx.schema.yaml 或 xxx.custom.yaml 中引用
key_binder:
import_preset: default # 从 default 继承快捷键的相关配置
import_preset
是导入成套的配置。
__include
是在当前位置包含另一 YAML 节点的内容。
具体用法参考官方 wiki。
下面是一个典型的示例:
# 方案文件 xxx.schema.yaml
punctuator:
# 可以用以下任何方式搞定:
# __include: punctuation:/ # 从共享目录引入预设的 punctuation.yaml
# import_preset: symbols # 从共享目录引入预设的 symbols.yaml
# import_preset: xxx # 引入自己自定义的 xxx.yaml
# 也可以直接在这里配置:
# full_shape:
# ...
# half_shape:
# ...
以 patch 的方式打补丁
文件名为 xxx.custom.yaml
,内容以 patch:
开头的,是补丁文件,注意缩进,可以对原配置进行覆盖和追加。
上面提到的,配置目录的 default.custom.yaml
其实就是在给共享目录的 default.yaml
文件打补丁。
squirrel.custom.yaml
和 weasel.custom.yaml
是同样的。
包括方案的 xxx.custom.yaml
是在给 xxx.schema.yaml
打补丁。
具体语法参考官方 wiki:定製指南
patch:
"一级设定项/二级设定项/三级设定项": 新的设定值
"另一个设定项": 新的设定值
"再一个设定项": 新的设定值
"含列表的设定项/@n": 列表第n个元素新的设定值,从0开始计数
"含列表的设定项/@last": 列表最后一个元素新的设定值
"含列表的设定项/@before 0": 在列表第一个元素之前插入新的设定值(不建议在补靪中使用)
"含列表的设定项/@after last": 在列表最后一个元素之后插入新的设定值(不建议在补靪中使用)
"含列表的设定项/@next": 在列表最后一个元素之后插入新的设定值(不建议在补靪中使用)
"含列表的设定项/+": 与列表合并的设定值(必须为列表)
"含字典的设定项/+": 与字典合并的设定值(必须为字典,注意YAML字典的无序性)
比如电脑手机共用一个方案 xxx.schema.yaml
,但手机上有一些特殊的设置,比如开启智能纠错(电脑上开这个有点难受,手机上全键盘全拼不开更难受)。
就可以创建一个 xxx.custom.yaml
配置好了扔到手机上,不用同时弄两份配置。
patch:
translator/enable_correction: true
只有像上面的打补丁的方式,是支持用 /
来分隔节点的。
打补丁时可以这样写(比如有如下文件 rime_ice.custom.yaml
):
patch:
a/b: foo
c/d/e: bar
但是非补丁的方案文件只能展开来写(比如 rime_ice.schema.yaml
):
a:
b: foo
c:
d:
e: bar
编写词库
由于 Rime 的设计,拼音词库中并不适用英文单词和超级简拼:
hello hello
世界 s j
蒙奇·D·路飞 meng qi d lu fei
过多的英文单词会导致打字时极其卡顿,上面超级简拼的编码会导致 s
、j
、d
结尾时无法响应超级简拼。
英文建议放到英文方案,非常规的注音建议放到自定义文本。
词库默认的列是:
---
name: 词库名
version: "版本号"
sort: by_weight(按权重排序) 或 original(按码表顺序排序)
columns:
- text # 词汇
- code # 编码
- weight # 权重
- stem # 造词码(不知道是啥,好像和拼音方案没有关系)
...
你好 ni hao 123
对于没有注音,又想设置权重的词库文件,修改列即可:
columns:
- text # 词汇
- weight # 权重
自定义文本
custom_phrase.txt
文件内的字词会占据最高权重,即排在候选项的最前面。
但不与其他翻译器互相造词,如果使用了完整编码,那么这个字或词将无法参与造词,即自造词无法被记住。
所以建议只固定非完整编码的字词,「的de」应为「的d」,「是shi」应为「是s」,「仙剑xianjian」应为「仙剑xj」。
注意 a o e
也是完整拼写,不宜写进自定义文本,否则「啊 哦 呃」无法进行自造词。
同步
installation.yaml
文件在第一次部署后会自动生成,在这里可以编辑当前设备的 ID 和同步目录,如:
installation_id: "MBP-001" # 本机的 ID 标志,生成的文件夹是这个名字
sync_dir: "/path/RimeSync" # 同步的路径
点击「同步用户数据」后,Rime 会和配置目录下的 *.userdb/
进行双向更新同步,并额外单向备份配置目录下的 YAML 和 TXT 文件。
同步目录(/path/RimeSync/MBP-001
)下生成的 *.userdb.txt
就是用户词典了,里面都是输入过的内容。
开关记忆
方案中有几个开关(switches
),比如简繁开关、Emoji 开关、中英标点开关。。。
如果想让输入法永远记住,需要取消设置 reset
,并在 default.custom.yaml
中写入 save_options
。
*永远记住的前提是通过方案选单选择,而不是快捷键切换。
如何删除相关功能
比如删除英文输入,所有的相关配置是这些:
# dependencies 下的:
- melt_eng
# engine/translators 下的:
- table_translator@melt_eng
melt_eng:
dictionary: melt_eng
两分拼字方案同样,删除 dependencies
、engine
和 liangfen:
这些部分的代码就可以了。
此外还有一些 Lua 的功能。
如果没有洁癖的话,直接在 engine
下注释掉那一行就好了。
皮肤
在 squirrel[.custom].yaml
或 weasel[.custom].yaml
中配置鼠须管或小狼毫的皮肤。
这里有一个鼠须管内置皮肤的展示图:NavisLab/rime-pifu(图片备份)
小狼毫自带皮肤预览。
需要自己设计皮肤的,推荐用这个图形化的皮肤设计器,鼠须管作者写的:LEOYoon-Tsaw/Squirrel-Designer
小狼毫的一个在线设计网页:RIME 西米
删词 or 降权
可以删除自造词,或降低词库中已有词语的权重(回到原始权重,不是降到最低)。
- 鼠须管使用 Fn + ⇧ + ⌫
- 小狼毫使用 Ctrl/Shift + Del
想永久删除一个词库中存在的词汇,只能编辑词库,重新部署。
如果各位有在使用过程中有发现什么错别字,希望可以提个 issue。
Tab 切光标
这功能挺好用的,每次用别人的电脑打字都会怀念这个功能。
已经默认开启,可以使用 Tab 或 Shift + Tab 在拼音中前后移动。
对于「xian西安」「tian提案」这种拼音,如果想切到「xi、ti」的后面,只能用左右方向键移动。
另外 Shift + ⌫ 可以删除单个汉字的拼音。
不同的上屏方式
按下空格会上屏汉字,按下回车会上屏字母(可临时输入一些词库中没有的英文)。
以输入「虐心 nue’xin」为例:
- 按回车,上屏的是
nuexin
。 - 按 Ctrl/Shift + 回车,上屏的是
nve xin
。(u → v,中间有空格)
translator/preedit_format
这里会影响输入框和 shift + 回车时的显示,比如是显示 nue、nve 或 nüe。
如果是双拼方案,preedit_format
还可以选择是否在输入框进行转换,比如小鹤双拼输入 zz
时,是显示 zz
还是 zou
。
opencc
opencc 除了做简繁转换,也可以做很多其他功能。
比如想输入摄氏度的符号 °C ,可以自定义文本中写上:
°C sheshidu
但这样,这个符号会顶到第一个候选项,重码时影响平时打汉字。推荐用 opencc 的方法,Emoji 就是这样实现的。
输入内容<Tab>响应内容1<Space>响应内容2<Space>响应内容3...
摄氏度 摄氏度 °C
输入 摄氏度
,第一个候选项是其本身,后续则是映射的其他内容。类似输入 提手旁
会得到 提手旁 扌
,输入 相泽南
会得到 相泽南 相沢みなみ
等等都是这么做的。
这个「输入内容」其本身应该在词库中存在,否则只能输入过一次后才会有响应。
另一个用法是 show_in_comment: true
,可以让「响应内容」放到 comment
里面。比如可以实现显示英文单词的翻译。
东风破
东风破 plum 是 Rime 官方的一个配置管理工具。
下面是一个简单使用示例:
git clone --depth=1 https://github.com/rime/plum
cd plum
bash rime-install iDvel/rime-ice:others/recipes/full
得,这就安装完了雾凇拼音。
以后更新词库可以用另一个配方:
bash rime-install iDvel/rime-ice:others/recipes/all_dicts
可以查看配置仓库中的 *.recipe.yaml
配方文件,来查看这个配方到底更新了什么。