开源Rime输入法[鼠须管]的傻瓜式配置之路

开源Rime输入法[鼠须管]的傻瓜式配置之路

写在开头的介绍

最近发现了一款开源输入法Rime|中州韵输入法,是一个跨平台的输入法算法框架,基于这一框架,Rime开发者与其他开源社区的参与者在Windows、Mac OS、Linux、Android等平台上创造了不同的输入法前端实现,Windows版本叫小狼毫(Weasel),Mac OS版本叫鼠须管(Squirrel),Linux版本叫ibus-rime,Android版本叫同文(Tongwen Rime Input Method Editor)。

Rime|中州韵输入法不同于我们以往使用的百度、搜狗、讯飞等输入法,它的配置上有一定的门槛,再就是它是开源的,不用担心会联网泄漏隐私等。

网上有许多配置方案,我们完全可以拿来使用,比如我现在使用的这个--Rime Squirrel 鼠须管配置文件(朙月拼音、小鹤双拼、自然码双拼)。

特点

朙月拼音(默认)、小鹤双拼、自然码双拼

词库不丢失,支持多平台同步

百万词库(城市信息、自然科学、社会科学、工程应用、农林渔畜、医药医学、电子游戏、艺术设计、生活百科、运动休闲、人文科学、娱乐休闲)

Emoji

动态输入时间、日期、星期

速度快、开源、保护隐私、自定义强

安装

下载鼠须管(因为我的是Macbook 所以我下载的是鼠须管,当然本文介绍的配置也是鼠须管的,小狼毫等没有设备没有研究。)安装后选择鼠须管输入法,默认的是繁体输入,通过快捷键control + ~ 切换输入方式,例如选择【朙月拼音·简化字】简体输出。

配置

1、下载配置文件,解压后得道两个文件夹【配置文件】和【花园明朝字体】,将字体安装到字体册(Mac OS缺少的生僻字)。

2、点击菜单栏ㄓ】-【用户设定】,将【配置文件】里所有文件粘贴进去,并选择覆盖。

3、点击菜单栏【ㄓ】-【重新部署】(快捷键 Control+Option+`),至此完成定制配置,可以愉快的使用了,剩下的就是慢慢的养词库了。

写在最后(鼠须管配置稍详解)

全局设置

全局设置文件 default.custom.yaml ,包含输入方案、候选词个数、中英文切换、快捷键。

以下为我的配置文件内容:

patch:

schema_list:

- schema: luna_pinyin_simp # 朙月拼音

- schema: double_pinyin_flypy # 小鹤双拼

- schema: double_pinyin # 自然码双拼

- schema: numbers # 大写数字

menu/page_size: 9 # 候选词个数

# 若 caps 切换大小写无效, 打开 Mac 系统偏好设置 > 键盘 > 输入法 > 取消勾选[使用大写锁定键切换“美国”输入模式]

ascii_composer/good_old_caps_lock: true # 若为 true, Caps 只切换大小写

ascii_composer/switch_key:

Caps_Lock: commit_code # Caps 键

Shift_L: commit_code # 左 Shift,切换中英文

Shift_R: commit_code # 右 Shift,切换中英文

Control_L: noop # 左 Control,屏蔽该切换键

Control_R: noop # 右 Control,屏蔽该切换键

key_binder/bindings: # 若开启, 去掉前面#

# 翻页

#- { when: has_menu, accept: Tab, send: Page_Down } # "tab" 键翻页, 和 "tab" 键分词只能二选一

- { when: composing, accept: Tab, send: Shift+Right } # "tab" 键分词

- { when: paging, accept: minus, send: Page_Up } # "-" 上一页

- { when: has_menu, accept: equal, send: Page_Down } # "=" 下一页

- { when: paging, accept: comma, send: Page_Up } # "," 上一页

- { when: has_menu, accept: period, send: Page_Down } # "." 下一页

- { when: paging, accept: bracketleft, send: Page_Up } # "[" 上一页

- { when: has_menu, accept: bracketright, send: Page_Down } # "]" 下一页

# 快捷键

#- { when: has_menu, accept: semicolon, send: 2 } # ":" (分号)选择第 2 个候选词

#- { when: has_menu, accept: apostrophe, send: 3 } # "'" (引号)选择第 3 个候选词

#- { when: composing, accept: Shift+Tab, send: Shift+Left } # "Shift+Tab" 键向左选拼音分词

#- { when: composing, accept: Control+a, send: Home } # "Control+a" 光标移至首

#- { when: composing, accept: Control+e, send: End } # "Control+e" 光标移至尾

#- { when: composing, accept: Control+g, send: Escape } # "Control+g" 清码

#- { when: composing, accept: Return, send: Escape } # "Return" 回车清码

#- { when: always, accept: Control+Shift+1, select: .next } # 切换输入方案

#- { when: always, accept: Control+Shift+2, toggle: ascii_mode } # 中/英文切换

#- { when: always, accept: Control+Shift+3, toggle: full_shape } # 全角/半角切换

- { when: always, accept: Control+Shift+4, toggle: simplification } # 繁简体切换

#- { when: always, accept: Control+Shift+5, toggle: extended_charset } # 通用/增广切换(显示生僻字)

#- { when: composing, accept: Control+b, send: Left } # "Control+b" 移动光标

#- { when: composing, accept: Control+f, send: Right } # "Control+f" 向右选择候选词

#- { when: composing, accept: Control+h, send: BackSpace } # "Control+h" 删除输入码

词库格式

新建文件命名格式为 <词库名>.dict.yaml

比如导入百度下载的词库 luna_pinyin.baidu.dict.yaml

词库外挂

打开 luna_pinyin.extended.dict.yaml ,将词库名添加。

如下:

# Rime dictionary

# encoding: utf-8

# Luna Pinyin Extended Dictionary(Basic) - 明月拼音扩充词库(基本)

---

name: luna_pinyin.extended # 词库名

version: "2021.02.07"

sort: by_weight # by_weight(按词频高低排序)或 original(保持原码表中的顺序)

use_preset_vocabulary: true # true 或 false,选择是否导入预设词汇表【八股文】

import_tables:

- luna_pinyin

- luna_pinyin.sogou

- luna_pinyin.baidubeifen

- luna_pinyin.huagong

- luna_pinyin.shuili

- luna_pinyin.dianshang

- luna_pinyin.baidu

词库载入及模式转换

打开 luna_pinyin_simp.custom.yaml

switches 列了:中文西文、全角半角、Emoji、简繁体、字节编码。

载入中英文词库,还可以修改英文候选词位置、Emoji 显示注释等。

以下为我的配置:

patch:

switches:

- name: ascii_mode # 0 中文,1 英文

reset: 0

states: ["中文", "西文"]

- name: full_shape # 全角/半角符号开关

states: ["半角", "全角"]

- name: show_emoji # Emoji 开关

reset: 1

states: ["🈚️️\uFE0E", "🈶️️\uFE0F"]

- name: zh_simp # (※1) 繁简转换

reset: 1

states: ["漢字", "汉字"]

- options: ["utf8", "gbk", "gb2312"] # (※2)字符集选单

reset: 0 # 默认 UTF8

states:

- UTF-8

- GBK

- GB2312

simplifier:

option_name: zh_simp

# 启用罕见字過濾

engine/filters:

- simplifier

- simplifier@emoji_conversion

- uniquifier

- charset_filter@gbk # (※3) GBK 过滤

- single_char_filter

emoji_conversion:

opencc_config: emoji.json

option_name: show_emoji

tags: abc

#tips: all # Emoji 显示注释

# 改写拼写运算,含英文的词汇(luna_pinyin.cn_en.dict.yaml)不影响简拼

"speller/algebra/@before 0": xform/^([b-df-hj-np-tv-z])$/$1_/

# 载入朙月拼音扩充词库

"translator/dictionary": luna_pinyin.extended

# 加载easy_en依赖

"schema/dependencies/@1": easy_en

# 载入翻译英文的码表翻译器,取名为 english

"engine/translators/@4": table_translator@english

# english翻译器的设定项

english:

dictionary: easy_en

spelling_hints: 9

enable_completion: false # 是否启用英文输入联想补全

enable_sentence: false # 混输时不出现带有图案的英文

initial_quality: -0.5 # 英文候选词的位置, 数值越大越靠前。

# 快捷表情和符号

punctuator:

import_preset: symbols

symbols:

"/fs": [½, ‰, ¼, ⅓, ⅔, ¾, ⅒]

"/xh": [*, ×, ✱, ★, ☆, ✩, ✧, ❋, ❊, ❉, ❈, ❅, ✿, ✲]

"/dq": [🌍, 🌎, 🌏, 🌐, 🌑, 🌒, 🌓, 🌔, 🌕, 🌖, 🌗, 🌘]

"/sg": [🍇, 🍉, 🍌, 🍍, 🍎, 🍏, 🍑, 🍒, 🍓, 🍗, 🍦, 🎂, 🍺, 🍻]

"/dw": [🙈, 🐵, 🐈, 🐷, 🐨, 🐼, 🐾, 🐔, 🐬, 🐠, 🦋]

"/bq": [😀, 😁, 😂, 😃, 😄, 😅, 😆, 😉, 😊, 😋, 😎, 😍, 😘, 😗]

"/ss": [💪, 👈, 👉, 👆, 👇, ✋, 👌, 👍, 👎, ✊, 👊, 👋, 👏, 👐]

"/sx": [=, <, ≤, >, ≥, ≈, ~, ℃, °]

half_shape:

"#": "#"

"*": "*"

"`": "`"

"~": "~"

"@": "@"

"=": "="

'\': "、"

"%": "%"

"$": ["¥", "$"]

"|": ["|", "|", "·"]

"/": ["/", "÷"]

"'": { pair: ["「", "」"] }

"[": "【"

"]": "】"

"<": "《"

">": "》"

recognizer/patterns/punct: "^/([a-z]+|[0-9]0?)$"

# 模糊拼音

"speller/algebra":

- erase/^xx$/ # 第一行保留

# 模糊音定義

# 需要哪組就刪去行首的 # 號,單雙向任選

#- derive/^([zcs])h/$1/ # zh, ch, sh => z, c, s

#- derive/^([zcs])([^h])/$1h$2/ # z, c, s => zh, ch, sh

#- derive/^n/l/ # n => l

#- derive/^l/n/ # l => n

# 這兩組一般是單向的

#- derive/^r/l/ # r => l

#- derive/^ren/yin/ # ren => yin, reng => ying

#- derive/^r/y/ # r => y

# 下面 hu <=> f 這組寫法複雜一些,分情況討論

#- derive/^hu$/fu/ # hu => fu

#- derive/^hong$/feng/ # hong => feng

#- derive/^hu([in])$/fe$1/ # hui => fei, hun => fen

#- derive/^hu([ao])/f$1/ # hua => fa, ...

#- derive/^fu$/hu/ # fu => hu

#- derive/^feng$/hong/ # feng => hong

#- derive/^fe([in])$/hu$1/ # fei => hui, fen => hun

#- derive/^f([ao])/hu$1/ # fa => hua, ...

# 韻母部份

#- derive/^([bpmf])eng$/$1ong/ # meng = mong, ...

#- derive/([ei])n$/$1ng/ # en => eng, in => ing

#- derive/([ei])ng$/$1n/ # eng => en, ing => in

# 樣例足夠了,其他請自己總結……

# 反模糊音?

# 誰說方言沒有普通話精確、有模糊音,就能有反模糊音。

# 示例爲分尖團的中原官話:

#- derive/^ji$/zii/ # 在設計者安排下鳩佔鵲巢,尖音i只好雙寫了

#- derive/^qi$/cii/

#- derive/^xi$/sii/

#- derive/^ji/zi/

#- derive/^qi/ci/

#- derive/^xi/si/

#- derive/^ju/zv/

#- derive/^qu/cv/

#- derive/^xu/sv/

# 韻母部份,只能從大面上覆蓋

#- derive/^([bpm])o$/$1eh/ # bo => beh, ...

#- derive/(^|[dtnlgkhzcs]h?)e$/$1eh/ # ge => geh, se => sheh, ...

#- derive/^([gkh])uo$/$1ue/ # guo => gue, ...

#- derive/^([gkh])e$/$1uo/ # he => huo, ...

#- derive/([uv])e$/$1o/ # jue => juo, lve => lvo, ...

#- derive/^fei$/fi/ # fei => fi

#- derive/^wei$/vi/ # wei => vi

#- derive/^([nl])ei$/$1ui/ # nei => nui, lei => lui

#- derive/^([nlzcs])un$/$1vn/ # lun => lvn, zun => zvn, ...

#- derive/^([nlzcs])ong$/$1iong/ # long => liong, song => siong, ...

# 這個辦法雖從拼寫上做出了區分,然而受詞典制約,候選字仍是混的。

# 只有真正的方音輸入方案纔能做到!但「反模糊音」這個玩法快速而有效!

# 模糊音定義先於簡拼定義,方可令簡拼支持以上模糊音

- abbrev/^([a-z]).+$/$1/ # 簡拼(首字母)

- abbrev/^([zcs]h).+$/$1/ # 簡拼(zh, ch, sh)

# 以下是一組容錯拼寫,《漢語拼音》方案以前者爲正

- derive/^([nl])ve$/$1ue/ # nve = nue, lve = lue

- derive/^([jqxy])u/$1v/ # ju = jv,

- derive/un$/uen/ # gun = guen,

- derive/ui$/uei/ # gui = guei,

- derive/iu$/iou/ # jiu = jiou,

# 自動糾正一些常見的按鍵錯誤

- derive/([aeiou])ng$/$1gn/ # dagn => dang

- derive/([dtngkhrzcs])o(u|ng)$/$1o/ # zho => zhong|zhou

- derive/ong$/on/ # zhonguo => zhong guo

- derive/ao$/oa/ # hoa => hao

- derive/([iu])a(o|ng?)$/a$1$2/ # tain => tian

# 分尖團後 v => ü 的改寫條件也要相應地擴充:

#'translator/preedit_format':

# - "xform/([nljqxyzcs])v/$1ü/"

# librime-lua 输入动态时间和日期

"engine/translators/@6": lua_translator@date_translator

词库转换

打开 搜狗官网 下载词库,格式为 .scel 文件

下载[深蓝词库转换工具]()(PS.需要使用Windows,为了转换一个词库操碎了心)

剩下的转换就很简单了,不放图了,转换的时候没有放图。

转换过程中转出项记得选择Rime中州韵。

转换完成后是 .txt 格式的,需要改为 yaml文件。直接重命名既可,比如我百度输入法备份的词库重命名为 luna_pinyin.baidubeifen.dict.yaml

记得开头要加上以下代码:

# 此处可以写一个备注,可以将包含哪些词库写在此处,方便日后查看是否有重复。

---

name: luna_pinyin.baidubeifen #词库名称(自定义)

version: "2022.08.29"#日期

sort: by_weight

use_preset_vocabulary: true

...

⚠️注意最后 *** ... *** 下面要空一行

生命不息,折腾不止。

相关推荐