Lufs's Blog

Life feeds on negative entropy.

好用好看好玩的输入法 —— 鼠须管配置使用

Lufs's Avatar 2022-01-29 分享

  1. 1. 缘起
  2. 2. 初识
  3. 3. 安装
  4. 4. 定制
    1. 4.1. 全局设置
      1. 4.1.1. 输入法方案
      2. 4.1.2. 记忆选择
      3. 4.1.3. 候选项数
      4. 4.1.4. 切换按键
      5. 4.1.5. Lua 选词扩展
      6. 4.1.6. 按键绑定
    2. 4.2. 输入方案
      1. 4.2.1. 选择菜单
      2. 4.2.2. 输入引擎
      3. 4.2.3. 模糊音
      4. 4.2.4. 码表
      5. 4.2.5. 字符映射
    3. 4.3. 词库
      1. 4.3.1. 词库配置
      2. 4.3.2. 词库格式
      3. 4.3.3. 关于搜狗词库
      4. 4.3.4. 自定义短语
    4. 4.4. 鼠须管配置文件
      1. 4.4.1. 程序单独设置
      2. 4.4.2. 皮肤设置
      3. 4.4.3. 皮肤配置
  5. 5. 技巧
    1. 5.1. 动态命令
    2. 5.2. 备份用户数据
    3. 5.3. 删除错误词频
  6. 6. 其它
  7. 7. 碎碎念
  8. 8. 参考

Rime 系列输入法在各个平台都有其对应的实现。我们可以对其进行配置,便会获得一个极其舒适且行云流水的基于个人偏好的输入体验。

TL;DR(太长不看系列)

嫌麻烦的话可以直接使用我的配置文件,具体介绍会放在另外一篇博文 —— 我的 Rime 配置 2022

缘起

个人在 2017 年开始使用「小鹤双拼」,当我开始使用 macOS 时,一路辗转波折,试遍了几乎所有的「大厂」输入法,却都不尽人意……甚至还有愈发严重的隐私问题

终于,在 macOS 10.14.2 中,系统自带的输入法支持了小鹤双拼

使用几天后,欣喜消减,macOS 系统自带输入法丢失词频,加上似乎不太稳定的调频,以及内存泄漏的问题,导致输入体验极其差劲,我便开始寻求新的替代品

初识

第一次接触到「鼠须管」是 macOS 自带输入法支持小鹤双拼之前,但因为其极其复杂的配置过程,搞不懂抑或是用不惯的其他人的配置,被哪眼花缭乱的配置文件「劝退」

但之后,我又被「落格输入法」高昂的售价劝退,本着穷折腾的精神,硬啃着文档,「借鉴」着别人的配置,折腾着属于我自己的「鼠须管」

事后「落格输入法」不再高昂,便第一时间入手了,但我发现「落格输入法」已经不如自己配置的「鼠须管」好用,不能完全的归于自己的掌控之中

所以,本文将会介绍些我个人的定制过程及使用技巧,当然也包含个人正在使用的配置LufsX/rime(欢迎 Star 呀 疯狂暗示

安装

详见 我的 Rime 配置 2022 —— 鼠须管、小狼毫与小企鹅输入法

定制

定制推荐使用 Visual Studio Code,顺带一提,可以使用快捷键 + / 取消注释

当然,其它的任何文本编辑器都可以使用,主要是看个人的喜好~

另外就是 Windows 下的定制与下文的定制是一样的,只是部分配置的位置不同而已

全局设置

定制文件位于 用户设定文件夹/default.custom.yaml

输入法方案

不需要的可以注释,需要额外添加的也可以通过此添加

命名规则是 lufs_flypy.schema.yaml => lufs_flypy

schema_list:
- schema: lufs_flypy # 小鹤双拼
- schema: lufs_pinyin # 朙月拼音

记忆选择

这是 F2 调出的选项菜单中的记忆保持选项,用于记忆输入方案中的 switches 开关

switcher:
save_options:
- ascii_mode
- full_shape
- ascii_punct
- traditionalization
- emoji_suggestion

候选项数

可依据自己需求更改,这里是结合个人日常输入习惯——手指按数字键 1 - 4 比较方便,所以确定候项数为 4

menu:
page_size: 4 # 候选项数

切换按键

先说说个人使用习惯吧,个人是使用 CapsLock 切换中英文输入,可以实现中文使用「鼠须管」输入,西文则是使用系统自带输入法

如果不习惯 CapsLock 切换,可以按照
lotem/default.custom.yaml
样例进行定制,这里就不过多展开了

(如果输入太多错误的字符,可以使用 ESC 一键清除)

ascii_composer/switch_key:
Shift_L: noop
Shift_R: commit_code # macOS 上此项无效,Windows 可用右 Shift 切换中英输入
Control_L: noop
Control_R: noop # macOS 上此项无效,Windows 上可自行定义
Caps_Lock: commit_code
Eisu_toggle: clear

Lua 选词扩展

这是源自 BlindingDark/rime-lua-select-character 的扩展,作用是打不好打的单字时,可以通过词组形式打出来,再使用默认快捷键 [] 选择词组中第一个或最后一个字上屏

如需使用 [] 翻页,或是不想使用 [] 选词,可修改为其它按键,如 , => comma. => period

key_binder/select_first_character: "bracketleft" # lua 选词快捷键,选第一个字
key_binder/select_last_character: "bracketright" # lua 选词快捷键,选最后一个字

按键绑定

这里可以设置什么键可以用来干什么,比如本配置中

  • Tab => 向下翻页
  • Shift + Tab => 向上翻页
  • = => 向下翻页
  • - => 向上翻页
  • ; => 二选
  • ' => 三选

不过 [] 无法翻页,需要 Lua 选词扩展 进行修改才能使用

key_binder/bindings: # 设置哪些键可以翻页,需要哪个取消注释即可
- { accept: "Control+k", send: "Shift+Delete", when: composing }
- { accept: Tab, send: Page_Down, when: composing } # Tab 向下翻页
- { accept: Shift+Tab, send: Page_Up, when: composing } # Shift + Tab 向上翻页
- { accept: semicolon, when: has_menu, send: 2 } # 输入时「;」二选
- { accept: apostrophe, when: has_menu, send: 3 } # 输入时「'」三选
- { accept: equal, send: Page_Down, when: composing }
- { accept: minus, send: Page_Up, when: composing }

# 失效设置,可通过关闭/更改 lua 选词快捷键恢复
- { accept: bracketleft, send: Page_Up, when: composing } # 左括号向上翻页
- { accept: bracketright, send: Page_Down, when: composing } # 右括号向下翻页

输入方案

个人主要使用的是小鹤双拼,那么我就以小鹤双拼输入方案作为例子,其文件位于 用户设定文件夹/lufs_flypy.schema.yaml

如需修改全拼方案,则将对应文件变为 用户设定文件夹/lufs_pinyin.schema.yaml

除了文中所介绍的,其它的设置一般都不推荐修改

选择菜单

一般来说不需要做出很大的更改,这部分用于控制输入法的一些行为

switches:
- name: ascii_mode
reset: 0
states: [中文, 西文]
- name: full_shape
states: [半角, 全角]
- name: ascii_punct
states: [。,, .,]
- name: traditionalization
# reset: 0 # 默认状态: 0 简体 1 繁体
states: [, ]
- name: emoji_suggestion
# reset: 1 # 默认状态: 0 关闭 1 开启
states: ["🈚️️", "🈶️"]

name 字段是输入方案中其它设置字段的名称(即 option_name

reset 字段用于恢复默认设置

states 字段用于定义 F2 菜单中的显示状态

输入引擎

一般来说不需做任何更改,但这儿可以关闭 Lua 选词扩展,删去对应注释的行或将该行注释即可

engine:
processors:
# - ascii_composer # Windows 用户请解除此行注释,否则将会无法切换到英文输入
- recognizer
- lua_processor@select_character_processor # lua 选词扩展,如需关闭请注释
- key_binder
......
translators:
- punct_translator
- lua_translator@date_translator # 动态日期时间输入
- table_translator@custom_phrase # 用户自定义词典
- script_translator
filters:
- simplifier@emoji_suggestion
# - lua_filter@long_phrase_first # 最长词组和单字在先
# - lua_filter@single_char_first # 单字优先
# - lua_filter@single_char_only # 只显示单字

processors 段是控制输入引擎,比如 英文输入引擎、反查、按键绑定 等涉及到输入引擎的「开关」,引入新的引擎需要在这儿添加激活

translators 段是控制「翻译器」的,通过匹配输入替换输出来实现部分功能,比如 符号转换、动态日期时间输入、用户自定义词典 都需要在这儿激活

filters 段是控制过滤器的,过滤器如其名,用于过滤/重排候选词的,simplifier@emoji_suggestion 项用于过滤繁体注释,不过这个并不影响本方案的设置,而重排操作的具体效果可见下或见 GitHub 仓库 Wiki(注:需在 rime.lua 文件中定义过滤器)

  1. 长词优先(默认)
    sort-lf

  2. 最长词和单字优先
    sort-lsf

  3. 单字优先

    候选第一页候选第二页
    sort-sf-1sort-sf-2
  4. 只有单字

    候选第一页候选第二页
    sort-so-1sort-so-2

模糊音

在此区域修改注释即可(不注释 = 打开;注释 = 关闭)

speller:
alphabet: zyxwvutsrqponmlkjihgfedcba/
delimiter: "'"
algebra:
- erase/^xx$/
- erase/^hm$/
- erase/^m$/
- erase/^n$/
- erase/^ng$/

# 模糊音区域
# 依据个人情况修改注释~
# 注释格式:键盘的输入码 -> 转化后的输入码

# 声母部分
# - derive/^([z])h/$1/ # z -> zh
# - derive/^([z])([^h])/$1h$2/ # zh -> z
# - derive/^([c])h/$1/ # c -> ch
# - derive/^([c])([^h])/$1h$2/ # ch -> c
# - derive/^([s])h/$1/ # s -> sh
# - derive/^([s])([^h])/$1h$2/ # sh -> s
# - derive/^l/n/ # n -> l
# - derive/^n/l/ # l -> n
# - derive/^r/l/ # l -> r
# - derive/^r/y/ # y -> r
# - derive/^hu$/fu/ # fu -> hu
# - derive/^fu$/hu/ # hu -> fu

# 韵母部分
- derive/([^iu])([a])n$/$1$2ng/ # ang -> an
- derive/([^iu])([a])ng$/$1$2n/ # an -> ang
- derive/([e])n$/$1ng/ # eng -> en
- derive/([e])ng$/$1n/ # en -> eng
# - derive/([i])n$/$1ng/ # ing -> in
# - derive/([i])ng$/$1n/ # in -> ing
# - derive/([i])an$/$1ang/ # iang -> ian
# - derive/([i])ang$/$1an/ # ian -> iang
# 由于小鹤双拼特性,无需 uang <-> iang

# 其它模糊音
# - derive/^hui$/fei/ # fei -> hui
# - derive/^fei$/hui/ # hui -> fei
# - derive/^huang$/wang/ # wang -> huang
# - derive/^wang$/huang/ # huang -> wang
# - derive/^([bpmfw])eng$/$1ong/ # bpmfw 后接 ong -> bpmfw 后接 eng

alphabet 字段用于定义需要参与拼写规则的字符
delimiter 字段用于定义输入的词与词之间的间隔符(仅接受第一个字符成为间隔符)
algebra 则为拼写规则,具体规则参见 官方 wiki

码表

后面部分的就是小鹤双拼的码表,要是需要使用其它双拼方案,可以直接替换码表部分,非双拼用户可忽略

# 小鹤双拼码表
- derive/^([jqxy])u$/$1v/
- derive/^([aoe])([ioun])$/$1$1$2/
- xform/^([aoe])(ng)?$/$1$1$2/
- xform/iu$/Q/
- xform/(.)ei$/$1W/
- xform/uan$/R/
- xform/[uv]e$/T/
- xform/un$/Y/
- xform/^sh/U/
- xform/^ch/I/
- xform/^zh/V/
- xform/uo$/O/
- xform/ie$/P/
- xform/i?ong$/S/
- xform/ing$|uai$/K/
- xform/(.)ai$/$1D/
- xform/(.)en$/$1F/
- xform/(.)eng$/$1G/
- xform/[iu]ang$/L/
- xform/(.)ang$/$1H/
- xform/ian$/M/
- xform/(.)an$/$1J/
- xform/(.)ou$/$1Z/
- xform/[iu]a$/X/
- xform/iao$/N/
- xform/(.)ao$/$1C/
- xform/ui$/V/
- xform/in$/B/
- xlit/QWRTYUIOPSDFGHJKLZXCVBNM/qwrtyuiopsdfghjklzxcvbnm/

若需自定义,参见 官方 wiki

字符映射

这里依据个人习惯修改了部分符号,如:

  • / => /
  • '' =>
  • ~ =>
  • @ => @
  • # => #
  • - => -
  • _ => ——
  • + => +
  • = => =
  • [ =>
  • ] =>
  • { =>
  • } =>

你也可以添加以 / 开头的快捷输入,如输入 /help 后会显示

f3

此时选中便会将显示的东西上屏

punctuator:
import_preset: symbols
symbols:
"/dn": [, , , , , , , , , ↩︎, , , , , , , , , ]
"/x": [, ×, , , , , , , , , , , , ]
"/sm": ["《", "》", "〈", "〉", "«", "»", "<", ">"]
"/tab": " "
"/help": [符號:/fh, 單位:/dw, 標點:/bd, 數學:/sx, 拼音:/py, 星號:/xh, 方塊:/fk, 幾何:/jh, 箭頭:/jt, 電腦:/dn, 羅馬數字:/lm, 大写羅馬數字:/lmd, 拉丁:/ld, 上標:/sb, 下標:/xb, 希臘字母:/xl, 大写希臘字母:/xld, 數字:/0到/9, 分數:/fs, いろは順:/iro, 假名:/jm或/pjm或/jmk到/jmo, 假名+圈:/jmq, 假名+半角:/jmbj, 俄語:/ey, 大写俄語:/eyd, 韓文:/hw, 韓文+圈:/hwq, 韓文+弧:/hwh, 結構:/jg, 偏旁:/pp, 康熙(部首):/kx, 筆畫:/bh, 註音:/zy, 聲調:/sd, 漢字+圈:/hzq, 漢字+弧:/hzh, 數字+圈:/szq, 數字+弧:/szh, 數字+點:/szd, 字母+圈:/zmq, 字母+弧:/zmh, 表情:/bq, 音樂:/yy, 月份:/yf, 日期:/rq, 曜日:/yr, 時間:/sj, 天干:/tg, 地支:/dz, 干支:/gz, 節氣:/jq, 象棋:/xq, 麻將:/mj, 色子:/sz, 撲克:/pk, 八卦:/bg, 八卦名:/bgm, 六十四卦:/lssg, 六十四卦名:/lssgm, 太玄經:/txj, 天體:/tt, 星座:/xz, 星座名:/xzm, 十二宮:/seg, 蘇州碼:/szm]
full_shape:
"@": "@"
half_shape:
"/": "/"
'\': "、"
"`": "`"
"~": ~
"@": "@"
"#": "#"
"-": "-"
"_": "——"
"+": "+"
"=": "="
"[": "「"
"]": "」"
"{": "『"
"}": "』"

词库

词库这个东西可是重中之重啊,直接决定了一个输入法的使用体验,这里就主要介绍词库格式了

词库配置

本配置中词库配置文件位于 用户设定文件夹/extended.dict.yaml

import_tables 下便是词库文件顺序,我的小私货可以按需注释(当然,不注释也没什么影响,但万一有些人很厌恶以至于都不想看到那些词汇呢?)

词库文件导入支持相对路径,比如在 用户设定文件夹/dicts/genshin.dict.yaml 可以用 dicts/genshin 调用

import_tables:
# 覆盖词频
- dicts/simp # 最小拼音词典
- dicts/simp-ext # 原字表中除单字外部分

- dicts/sogou_net # 网络流行语
- dicts/thuocl_animal # 动物
- dicts/thuocl_caijing # 财经
- dicts/thuocl_food # 饮食
- dicts/thuocl_idiom # 成语俗语
- dicts/thuocl_IT # IT
- dicts/thuocl_medical # 医学
- dicts/thuocl_renmingdiming # 人名地名

# 一点点小小的私货,不需要的可以自行关闭呢
- dicts/sogou_genshin # 原神
- dicts/sogou_minecraft # Minecraft 词条
- dicts/sogou_touhou # 东方 Project

词库格式

本配置中,词库文件位于 用户设定文件夹/dicts/

这里就用 example.dict.yaml 来举例

文件开头应使用如下格式

---
name: example
version: "2022-01-29"
sort: by_weight

接下来的词库内容应按照格式 词组 + 拼音(可选) + 词频(可选)编写,词组拼音词频之间使用 Tab 缩进 间隔开,词组中各个字的拼音之间使用 空格 间隔开,例子如下

提示:若使用本配置,可以通过输入 /tab 来输入 Tab 缩进

你要加入词库的词	ni yao jia ru ci ku de ci
这是另外个词组或一句话 zhe shi ling wai ge ci zhu hou yi ju hua
这个词组 zhe ge ci zu 666
另外一个词组

关于搜狗词库

本配置中所使用的词库部分来源于搜狗词库

搜狗词库格式为 scel,可在 Windows 下使用 深蓝词库转化 转换为 Rime 格式

虽说 macOS 也能用,不过只有命令行,而且配置过程比较麻烦,所有还是找个用 Windows 的小伙伴帮你转化下词库吧~

注意,转化出来的词库是带有词频的,由于本配置中使用了 thunlp/THUOCL 词库及词频,所以推荐使用 VS CODE 的「搜索替换」( + F)功能将其全部删去

自定义短语

为了便于编辑而引入了 custom phrase 功能,只需编辑 用户设置文件夹/custom_phrase.txt 即可便利的进行自定义短语操作

格式为:自定义短语 + Tab 缩进 + 输入编码 (+ Tab 缩进 + 权重)

权重越大,显示越前,例子如下

自定义	diy
中州韵输入法引擎 rime 2
https://rime.im/ rime 1
Rime rime 3

f5

鼠须管配置文件

位于 用户设置文件夹/squirrel.custom.yaml

程序单独设置

本配置中不推荐使用!

app_options: {} # 清除应用默认输入法,防止无法输入中文(通过 Caps 切换中英文)

如非要用,哪我也拦不住你,单独设置格式如下

app_options:
com.microsoft.VSCode: # 应用包名
ascii_mode: true # true 默认英文,false 默认中文
scii_punct: true # true 使用西文标点,false 使用中文标点

皮肤设置

总设置如下,color_scheme 后接的是皮肤主题,可以按照后面的主题名修改来切换主题

如果你是使用我编译的版本,则输入法具有微微的透明效果,不喜欢的话可以直接关掉 translucency,其它没有合 PR 的版本该设置项无影响

官方版本已经支持设置透明度了,在我的配置里,总开关仍为 translucencystyle 里的样式可以强制覆盖皮肤样式)

style:
color_scheme: ayaya
color_scheme_dark: ayaya
translucency: true # 背景半透明总开关,不需要关掉即可

皮肤配置

「鼠须管」的皮肤可以使用 Squirrel DesignerRIME 西米 - for Squirrel 来可视化定制「鼠须管」外观,也可以使用内置皮肤,内置皮肤及效果如下

皮肤名称预览图
ayayaayaya
ayaya_darkayaya-dark
reimureimu
reimu_darkreimu-dark
apathyapathy
win10win10
win10-ayayawin10-ayaya
macos12-lightmacos12-light
macos12-darkmacos12-dark

如果是原始配置文件,我就拿 macos_light 来举例子,具体作用见配置注释

单独拎出来个 horizontal 配置项,该项配置若为 true 则是水平排列,若为 false 则是竖直排列,依据个人喜好定制即可

macos_light:
author: "一方<liuour@gmail.com>"
back_color: 0xFFFFFF # 候选条背景色,24位色值,16进制,BGR顺序
border_color: 0xFFFFFF # 边框色
text_color: 0x424242 # 拼音行文字颜色
hilited_back_color: 0xD75A00 # 第一候选项背景背景色
hilited_candidate_text_color: 0xFFFFFF # 第一候选项文字颜色
hilited_candidate_label_color: 0xFFFFFF # 第一候选项编号颜色
hilited_comment_text_color: 0x999999 # 注解文字高亮
hilited_text_color: 0x999999 # 高亮拼音 (需要开启内嵌编码)
candidate_text_color: 0x3c3c3c # 预选项文字颜色
comment_text_color: 0x999999 # 拼音等提示文字颜色
horizontal: true # 水平排列
inline_preedit: true # 单行显示,false双行显示
label_color: 0x999999 # 预选栏编号颜色
candidate_format: "%c\u2005%@" # 用 1/6 em 空格 U+2005 来控制编号 %c 和候选词 %@ 前后的空间
font_face: "PingFangSC" # 候选词编号字体
font_point: 16 # 候选文字大小
label_font_point: 13 # 候选编号大小
corner_radius: 5 # 候选条圆角
hilited_corner_radius: 5 # 高亮圆角
border_height: 4 # 窗口上下高度
border_width: 4 # 窗口左右宽度
border_color_width: 0 # 输入条边框宽度

(小声说:个人前面的截图使用的字体是 lxgw/LxgwWenKai,需要手动安装其中的 Regular 字体)

技巧

动态命令

目前支持的如下

输入输出
date2022-01-29 等格式
time02:45:55 等格式
datetime2022-01-29 10:00:00 等格式
week周六星期六

备份用户数据

「鼠须管」的用户数据主是在 用户设定文件夹/example.userdb/ 下,只要将这个文件夹备份好,就可以保留一些个人输入的词频数据及一些自造词了,养好后真的特别舒服

我个人是将整个 用户设定文件夹/example.userdb/ 备份下来了

你也可以参照 说明书-同步用户数据 所述方法,通过 - 同步用户数据 来达到备份用户数据的目的

删除错误词频

将光标移动到需要删除词频的词上,按下 Shift + Fn + Backspaces(若键盘有 Delete 键,则可以用 Shift + Delete)即可

注意,该操作仅会删除词频使其恢复原有排序,并不能从词库里彻底删除这个词!

其它

更加详细的定制指南可以参照官方仓库说明书定制指南

或是 LEOYoon-Tsaw鼠须管定制指南Schema.yaml 详解

碎碎念

这玩意居然是我免费可以用的!

终于不用被大厂的帐号体系和广告绑架了,也不用担心隐私问题(不是担心隐私泄漏,就是讨厌被「人」盯着的那种感觉~)

参考

本文作者 : Lufs
本文采用 CC BY-NC-SA 4.0 许可协议。转载和引用时请注意遵守协议!
本文链接 : https://blog.isteed.cc/post/squirrel-customization-2022/

本文最后更新于 天前,文中所描述的信息可能已发生改变