「鼠须管」的调教笔记
00 分钟
2022-3-23
这篇文章最早的创建日期是 2015.06.14 13:46,至今「鼠须管」依旧是自己使用最习惯的输入法,也一直在维护一份它的配置,后期还增加了编译版本的下载。因为是通过 Dropbox 分享,所以更新后的下载链接可以保持不变,同样使用鼠须管的用户定期下载配置覆盖并「重新部署」即可。

最开始只是想调整一下鼠须管的界面风格,让它变得小清新一点,结果周末的时间就都掉到鼠须管配置的这个「坑」里,改完了界面接着想解决候选词乱码的问题,然后是模糊拼音扩充词库、表情输入、符号输入、特殊符号直接上屏等需求接踵而来。
鼠须管官网的介绍其实已经很全面了,还提供了很多参照代码。但是设置的过程毕竟不是友好的图形界面,需要打开「用户设定」目录下的具体文件修改代码部分,所以过程并不顺畅,即便是简单的复制和粘贴,也要考虑语法缩进的问题。在没有更好的图形化配置界面出来以前,注定鼠须管是一个有一定学习成本的输入法,而要让它更好用只能学习并调教它。
notion image
基本的调教并没有想象中的那么复杂,看完官网的帮助后就可以动手试试。由鼠须管的图标中选择「用户设定」(~/Library/Rime/)定位到具体文件,修改完成再执行一次「重新部署」就能看到修改后的效果。
notion image
方案特点:支持 /dn 方式的符号输出;常见拼写的容错处理;输入字母 v 开头的短语输出颜文字;词义关联模式的表情符号;#、`、符号直接上屏;单引号输出「」;- + 以及 <> 键翻页;上下箭头选择其他候选; 包含常用汉语、诗词和英文的词典。
如果你平时用的就是「明月拼音 · 简化字」、「小鹤双拼」、「五笔拼音」,可以跳过后续具体配置的介绍直接到文章最后下载附件,解压缩并将其中的文件放到「用户设定」目录「重新部署」即可。
直接部署的简单步骤: 1. 下载并安装官网的正式版鼠须管安装包 0.10.0,测试版本下载地址 https://dl.bintray.com/rime/squirrel/; 2. 重启系统; 3. 点击菜单栏的输入法图标,切换到鼠须管,选择「用户设定」,进入用户设定文件夹; 4. 下载配置文件和扩充词典文件,访问 GitHub 下载后复制到配置文件夹,重新部署。

调教基本思路

鼠须管的「用户设定」文件夹里包含很多文件,根据自己的输入要求定制的时候实际上涉及的文件只有固定的几个,一些是调整输入法外观和参数的,还有一大部份是扩展词库的文件。
notion image
配置输入法的的外观和特性的几个文件:
  • squirrel.custom.yaml ,自定义皮肤;
  • default.custom.yaml ,设定备选词数量,定义输入方案;
  • luna_pinyin_simp.custom.yaml ,定义扩充词库、加载符号库、模糊拼音。明月拼音 · 简化字的输入方案配置文件,明月拼音对应的文件就是 luna_pinyin.custom.yaml;
  • installation.yaml,定义配置文件保存到 Dropbox 文件夹
以上几个以 .custom.yaml 作为后缀的文件,意味着是以补丁的方式来实现个性化定制的,输入法后续升级不会覆盖这些文件。所以自定义的文件配置中起始部分都会有patch:的字段,每个配置文件中有且只需要一行这个代码段。
扩展词库涉及到的几个配置文件,参照扩展词库的内容,你可以自己定义类似的词库:
  • luna_pinyin.extended.dict.yaml,扩展词库主文件,其他词库都需要在这个主文件中定义才能被调用,如果不想加载某个词库在此文件中注释掉即可(在所在行前加 # 井号)
  • luna_pinyin.cn_en.dict.yaml,英文、中英文混合短语和名词
  • luna_pinyin.computer.dict.yaml,计算机术语
  • luna_pinyin.emoji.dict.yaml,表情符号
  • luna_pinyin.hanyu.dict.yaml,汉语大词典
  • luna_pinyin.kaomoji.dict.yaml,颜文字表情符号
  • luna_pinyin.movie.dict.yaml,电影名称
  • luna_pinyin.music.dict.yaml,音乐和歌曲名
  • luna_pinyin.name.dict.yaml,人名
  • luna_pinyin.poetry.dict.yaml,唐诗宋词、千家集、楚辞、诗经
词库文件是相对单独的,鼠须管中挂载词库的方式比以前更灵活,而且编辑起来也很方便,在 luna_pinyin.extended.dict.yaml 这个词库主文件中定义和关联其他词库,而扩展词库的加载则是由 luna_pinyin_simp.custom.yaml 这个文件来决定。
扩展词库文件被修改后需要「重新部署」才能生效。
鼠须管的配置中,重要的是主要外观和特性文件的设置,第一步是修改 default.custom.yaml 确定你的输入方案,也就是按「control+` 」时出现的可供选择的明月拼音、明月拼音 · 简化字、五笔等;第二步是修改输入法的外观 squirrel.custom.yaml;第三步就是修改你的输入方案的配置文件,例如:明月拼音 · 简化字,那么只需要修改 luna_pinyin_simp.custom.yaml ,输入方案的配置文件像是一个接口文件,模糊拼音、加载扩充词库、定义一些特殊符号的直接上屏、定义个性化的翻页按键等都在这个文件里。
安装完鼠须管后,用户文件夹里可能看不到上述提到的这些文件,简单的办法就是复制一个同样后缀的文件然后对照修改。下载的词库或配置文件中也可能直接包含这样的文件,如果从不同来源下载的文件中包含同样命名的文件,最好对照一下内容,不要盲目覆盖导致配置丢失。

配置文件介绍

luna_pinyin.extended.dict.yaml

词库部署的过程就是下载扩充词库(登录页面后点击右下角的「Download ZIP」),下载完成后解压缩并将 luna_pinyin.dict 中的文件复制到你的「用户设定」目录。假如你和我一样是使用「明月拼音 · 简化字」,就不用复制文件夹中的 double_pinyin.custom.yaml 这个文件。复制完成后重命名 luna_pinyin.custom.yaml 为 luna_pinyin_simp.custom.yaml。如果这个文件已经存在,那么需要将下载文件 luna_pinyin.custom.yaml 中的内容合并到已有 luna_pinyin_simp.custom.yaml 文件当中。
英文常用词库(luna_pinyin.cn_en.dict.yaml)里自己尝试添加了一个 osx ☞ OS X,第一次失败是因为间隔之间没有用 tab 键,而是用空格,第二次失败是因为音节之间没有正确空格,正确的规则是「文字 - 编码 - 权重频度」三个字段之间是 tab,编码如果是多个「音节」音节之间用空格分开,权重数值的高低决定了音节相同时多个候选词在候选条上排列的先后顺序,当然全局性的词频拥有更高的优先级(候选条上高亮选中,然后 shift+fn+delete 可以删除记忆错误的词频调整)。
notion image
编辑字典文件时,TextWrangler 编辑器可以「View-Text Display-Show Invisibles」将隐藏符号显示出来以便查错和参照。TextWrangler 「Edit - Text Options」设置里去掉「Auto-expend tabs」的勾选,输出的就是 tab 而不是 4 个空格。
表情符号的问题,有几种解决方案,一种是把表情作为输入方案的一种选择,需要的时候像切换繁体和简体一样切换到表情输入;另一种是将表情加入到拼音方案中,但是这种方式每次都出来一堆表情,而且没法实现词频的调整,所以最后选择的是将表情作为字典来使用的方案,基于网友 [@ lembacon](https://gist.github.com/lembacon/4593540) 的表情文件制作了一份字典文件(luna_pinyin.emoji.dict.yaml,已包含在文章后的下载中),需要注意的是新的表情字典,需要在扩展字典的主文件(luna_pinyin.extended.dict.yaml)中添加一段代码:luna_pinyin.emoji
name: luna_pinyin.extended version: “2014.10.28” sort: by_weight use_preset_vocabulary: true # 此處爲明月拼音擴充詞庫(基本)默認鏈接載入的詞庫,有朙月拼音官方詞庫、明月拼音擴充詞庫(漢語大詞典)、明月拼音擴充詞庫(詩詞)、明月拼音擴充詞庫(含西文的詞彙)。如果不需要加載某个詞庫請將其用「#」註釋掉。 # 雙拼不支持 luna_pinyin.cn_en 詞庫,請用戶手動禁用。 import_tables:
  • luna_pinyin
  • luna_pinyin.hanyu
  • luna_pinyin.poetry
  • luna_pinyin.cn_en
  • luna_pinyin.emoji
  • luna_pinyin.kaomoji
  • luna_pinyin.music
  • luna_pinyin.movie
  • luna_pinyin.computer
  • luna_pinyin.name …

default.custom.yaml

全局性的这个文件里,主要是定义输入方案和候选词的数量,输入方案上我选择了:明月拼音 · 简化字、明月拼音、明月拼音 · 语句流、五笔拼音混合輸入,候选词数量设置的是 7 个(page_size: 7)。
patch: switcher: caption: 〔方案选单〕 hotkeys: - Control+grave
menu: page_size: 7 schema_list:
  • schema: luna_pinyin_simp
  • schema: luna_pinyin
  • schema: luna_pinyin_fluency # 语句流
  • schema: wubi_pinyin # 五笔拼音混合輸入

squirrel.custom.yaml

输入法外观的设定是在梁海方案的基础上修改的,并参照了 10.11 El Capitan 输入法的配色和字体。候选词条中如果出现生僻字无法显示(显示为框问号),可以在方案配色的字体指向上多加一个「 花园明朝」字体。
patch: show_notifications_when: appropriate # 状态通知,适当 (appropriate),开(always)关(never)
style: color_scheme: apathy preset_color_schemes: apathy: name: “冷漠 / Apathy” author: “LIANG Hai” horizontal: true # 水平排列 inline_preedit: true #单行显示,false 双行显示 candidate_format: “%c\u2005%@\u2005” # 编号 %c 和候选词 %@ 前后的空间 corner_radius: 5 #候选条圆角 border_height: 0 border_width: 0 back_color: 0xFFFFFF #候选条背景色 font_face: “PingFangSC-Regular,HanaMinB” #候选词字体 font_point: 16 #候选字词大小 text_color: 0x424242 #高亮选中词颜色 label_font_face: “STHeitiSC-Light” #候选词编号字体 label_font_point: 12 #候选编号大小 hilited_candidate_text_color: 0xEE6E00 #候选文字颜色 hilited_candidate_back_color: 0xFFF0E4 #候选文字背景色 comment_text_color: 0x999999 #拼音等提示文字颜色
外观设置中指向了 El Capitan 最新的字体「苹方」和「 花园明朝」,后者需要单独下载安装。

luna_pinyin_simp.custom.yaml

部署过扩充词库后,我们可以继续修改 luna_pinyin_simp.custom.yaml 这个文件来定义符号的快速输入和模糊拼音的部分。
符号的快速输入(例如:输入 / dn,显示电脑常用符号)在明月拼音和明月拼音 · 语句流里都已经包含,要将其移植到简化字方案中,需要在 luna_pinyin_simp.custom.yaml 方案中补充 punctuator:recognizer:两个部分的内容。在加入这个部分代码的时候因为缩进的问题出现了第一次问题,因为直接从明月拼音中复制过来的代码加入到自定义的方案中时需要重新调整缩进。
为了方便在 Ulysses 这样的 Markdown 语法中快速输入#符号,紧接着在 luna_pinyin_simp.custom.yaml 中增加了直接上屏的定义,添加这个部分代码时又一次犯错,重复写入了包含 punctuator的部分,琢磨清楚以后才搞定#一类符号的直接上屏。
patch:

載入朙月拼音擴充詞庫

“translator/dictionary”: luna_pinyin.extended “speller/algebra/@before 0”: xform/^([b-df-hj-np-tv-z])$/$1_/

符号快速上屏

punctuator: import_preset: symbols half_shape: “#”: “#” “":"”“~”: “~” “@”: “@” “=”: “=” “/”: [“/”, “÷”] ‘\’: [“、”, ‘\’]“’”: {pair: [“「”, “」”]} “[”: [“【”, “[”]“]”: [“】”, “]”] “$": \["¥", "$”, “€”, “£”, “¢”, “¤”] “<”: [“《”, “〈”, “«”, “<”]“>”: [“》”, “〉”, “»”, “>”] recognizer: patterns: email: “[A-Za-z][-.0-9A-Za-z]@._$"uppercase:"\[A-Z]\[-\_+.'0-9A-Za-z]_$"url:"(www[.]|https?:|ftp[.:]|mailto:|file:)._$|^\[a-z]+\[.].+$”punct:“^/([a-z]+|[0-9]0?)$”
过滤生僻字,在 luna_pinyin_simp.custom.yaml 中增加以下代码后候选中将不再显示生僻字。「control+」中选择「通用 - 增广」来切换,可以输入 ha 来查看效果。虽然实际处理生僻字的代码只是cjk_minifierenable_charset_filter: true` 这两行,但是在添加代码时需要完整的添加如下部分才行。
switches: - name: ascii_mode reset: 0 states: [“中文”, “西文”] - name: full_shape states: [“半角”, “全角”] - name: extended_charset #生僻字开关 states: [“通用”, “增廣”] - name: zh_simp reset: 1 states: [“漢字”, “汉字”] - name: ascii_punct states: [“。,”, “.,”]
simplifier: option_name: zh_simp
engine: processors: - ascii_composer - recognizer - key_binder - speller - punctuator - selector - navigator - express_editor segmentors: - ascii_segmentor - matcher - abc_segmentor - punct_segmentor - fallback_segmentor translators: - punct_translator - table_translator@custom_phrase - reverse_lookup_translator - script_translator filters: - simplifier - uniquifier - cjk_minifier #過濾拼音輸入法中的罕用字 translator: enable_charset_filter: true #启用罕见字過濾
模糊音的部分也是添加到 luna_pinyin_simp.custom.yaml 文件中,从官网复制过来的方案中包含很多模糊音的设置,去掉前面的#就可以生效,不过我只选择了容错拼写的部分。

模糊拼音

‘speller/algebra’: - erase/^xx$/ # 第一行保留

easy_en.dict.yaml

英文单词词典的添加方式和上面提到的词库的方式略有不同,会在 luna_pinyin_simp.custom.yaml 文件中添加如下代码(下图所示),另外英文单词词典配套还需要两个文件 easy_en.dict.yaml 和 easy_en.schema.yaml。

加載 easy_en 依賴

“schema/dependencies/@next”: easy_en # 載入翻譯英文的碼表翻譯器,取名爲 english “engine/translators/@next”: table_translator@english # english 翻譯器的設定項 english: dictionary: easy_en spelling_hints: 9 enable_completion: true enable_sentence: false initial_quality: -3

載入朙月拼音擴充詞庫

“translator/dictionary”: luna_pinyin.extended # 改寫拼寫運算,使得含西文的詞彙(位於 luna_pinyin.cn_en.dict.yaml 中)不影響簡拼功能(注意,此功能只適用於朙月拼音系列方案,不適用於各類雙拼方案) # 本條補靪只在「小狼毫 0.9.30」、「鼠鬚管 0.9.25 」、「Rime-1.2」及更高的版本中起作用。 “speller/algebra/@before 0”: xform/^([b-df-hj-np-tv-z])$/$1_/
单词词典能在输入英文单词时进行候选提示,如果平时没有这种输入的需求只需要在 luna_pinyin_simp.custom.yaml 文件中将英文单词的部分注释掉并删除 easy_en.dict.yaml 和 easy_en.schema.yaml 以及对应生成的. bin 词库文件。

custom_phrase.txt(自定义短语文本)

朙月拼音词典(dict)中,编码并不是一个简单的字符序列,而是「拼音音节」的序列,格式是以空格分隔的拼音。类似于词语的简拼(输入法→srf )并不作为编码写进词典,如果任意将拼音音节以外的编码加入同一个词典,他们将被视同拼音音节处理,且可能会干扰正常的音节切分。 如果要自定义简拼缩写来输出一个句子或者词汇,需要用独立的自定义短语文本来存放。
custom_phrase.txt 类似于系统的「文本替换」功能,用来定义短语和缩写,例如「msd = 马上到!」,还可以添加自己的地址、邮件等。「dy = 电影」这样的缩写形式,同样建议添加到 custom_phrase.txt 文件中而不是 dict 的词典文件中。自定义短语中的条目只能以完全匹配的方式来调用,所以短语编码中不要有空格。
notion image
自定义短语已在朙月拼音等方案里默认启用了,只需要在用户文件夹写一个文件: https://gist.github.com/lotem/5440677.

小鹤双拼键位

鼠须管的配置方案中包含了自然码和小鹤双拼的键位图,个人比较喜欢小鹤双拼的键位布局,记忆和布局都很合理。在线练习可以访问
,如果专注一些 2-3 天基本就没问题了。
notion image

鼠须管的报错日志

鼠须管的报错会提示日志在 $TMPDIR/rime.Squirrel.INFO ,用搜索找不到这个文件。需要在「终端」中先定位临时文件的目录(终端界面中输入 $TMPDIR 获得路径),然后复制地址用 Finder 的「前往文件夹」打开,最后在 rime.Squirrel.INFO 文件上右键「显示原身」就能定位到具体的日志文件。
notion image

下载地址和部署

  • 从部署和调教顺序上来说,最好先扩充词库,然后在 luna_pinyin_simp.custom.yaml 文件中再添加符号定义、模糊拼音设定等内容。
  • 在鼠须管中「 /」这类符号输入后会有很多个选项,如果要快速输入它该怎么办呢,「/ + enter」只需要输入完后直接回车即可。
  • 其他辅助调整还有将配置文件保存到 Dropbox,在 installation.yaml 文件中添加一行 sync_dir: "/Users/scomper/Dropbox/RimeSync",指向到自己的 Dropbox 文件夹。
  • 类似于 / dn 这样快速输入的符号,可以用文本编辑器(如:TextWrangler)打开「用户设定」文件夹里的 symbols.yaml 文件查看,同理,查看字典文件 luna_pinyin.emoji.dict.yaml 和 luna_pinyin.kaomoji.dict.yaml 可以了解对应短语的设定情况,感兴趣的可以按照格式自行扩充和编辑。
  • 单个汉字匹配的表情默认在词频上很靠后(不知道是什么原因导致的),需要翻几页选择一次后词频才会调整到前面。
※ 访问 GitHub 查看代码。Rime 目录下,除了配置文件包里的文件,其他也就 installation.yaml、user.yaml 和 essay.txt,文件夹就三个 opencc、build、trash。很早以前版本的用户可以对照此原则删掉多余的文件重新部署。
※ 字体下载:思源黑体、思源宋体或者天珩字库花园明朝

评论