
我的万象方案配置(裁切)
[2026-05-05 二 18:47]
前言
万象是个好方案,特别是加入音调之后,非常符合直觉,都不用拆字反查了。但是由于万象方案覆盖面很广,其实很多东西都是没必要的,添加了启用了反而可能影响性能。这里跟大家分享一下我自用的万象裁切方案,其中关闭了很多功能,但基本的音调还是在,而且性能也好了不少。
default.custom.yaml
这里就只写改了什么地方,不过我基本也还是将原版复制过来再直接替换的。
patch: # Rime default settings
# encoding: utf-8
# 要比共享目录的同名文件的 config_version 大才可以生效
config_version: 'LTS'启用pro方案
# 方案列表
schema_list:
- schema: wanxiang_pro
# - schema: wanxiang_english
# - schema: wanxiang_t9为了把 7 8 9 0 留给四个音调,故设置候选词为5个
# 菜单
menu:
page_size: 5 # 候选词个数,不得超过6个,7890代表声调
alternative_select_labels: [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ] # 修改候选项标签,Windows用这行会自动加点
#alternative_select_labels: [ ⒈, ⒉, ⒊, ⒋, ⒌, ⒍, ⒎, ⒏, ⒐, ⒑ ] # 修改候选项标签,Linux用这行用了加点字符
#alternative_select_keys: ASDFGHJKL # 这里战略性占用选字按键,如编码字符占用数字键,则需另设选字键与上游保持一致
# 万象状态面板相关
switcher:
caption: 「万象状态面板」
hotkeys:
- Control+grave
save_options: # 开关记忆(方案中的 switches),从万象状态面板(而非快捷键)切换时会记住的选项,需要记忆的开关不能设定 reset
- ascii_punct
- s2t
- s2hk
- s2tw
- emoji
- full_shape
- prediction
- super_tips
- charset_filter
- chaifen_switch
- tone_display
- fuzhu_hint
- tone_hint
- full_pinyin
- chinese_english
- search_single_char
- abbrev
fold_options: true # 呼出时是否折叠,多方案时建议折叠 true ,一个方案建议展开 false
abbreviate_options: true # 折叠时是否缩写选项
option_list_separator: ' / ' # 折叠时的选项分隔符
# 中英文切换
#
# good_old_caps_lock:
# true 切换大写
# false 切换中英
# macOS 偏好设置的优先级更高,如果勾选【使用大写锁定键切换“ABC”输入法】则始终会切换输入法。
#
# 切换中英:
# 不同的选项表示:打字打到一半时按下了 CapsLock、Shift、Control 后:
# commit_code 上屏原始的编码,然后切换到英文
# commit_text 上屏拼出的词句,然后切换到英文
# clear 清除未上屏内容,然后切换到英文
# inline_ascii 切换到临时英文模式,按回车上屏后回到中文状态
# noop 屏蔽快捷键,不切换中英,但不要屏蔽 CapsLock这里将左Shift设置为无操作,是我使用emacs的结果,不用的人请不用修改。
ascii_composer:
good_old_caps_lock: true # true | false
switch_key:
Caps_Lock: clear # commit_code | commit_text | clear
Shift_L: noop # commit_code | commit_text | inline_ascii | clear | noop
Shift_R: commit_code # commit_code | commit_text | inline_ascii | clear | noop
Control_L: noop # commit_code | commit_text | inline_ascii | clear | noop
Control_R: noop # commit_code | commit_text | inline_ascii | clear | noop一些个人风格的快捷键
# 处理符合特定规则的输入码,如网址、反查
# 此处配置较为通用的选项,各方案中另增加了和方案功能绑定的 patterns。
recognizer:
patterns:
# 快捷键
key_binder:
bindings:
# Tab / Shift+Tab 切换光标至下/上一个拼音
#- { when: composing, accept: Shift+Tab, send: Shift+Left }
#- { when: composing, accept: Tab, send: Shift+Right }
# Tab / Shift+Tab 翻页
# - { when: has_menu, accept: Shift+Tab, send: Page_Up }
# - { when: has_menu, accept: Tab, send: Page_Down }
# numbered_mode_switch:
# - { when: always, select: .next, accept: Control+Shift+1 } # 在最近的两个方案之间切换
# - { when: always, select: .next, accept: Control+Shift+exclam } # 在最近的两个方案之间切换
# - { when: always, toggle: ascii_mode, accept: Control+Shift+2 } # 切换中英
# - { when: always, toggle: ascii_mode, accept: Control+Shift+at } # 切换中英
# - { when: always, toggle: full_shape, accept: Control+Shift+5 } # 切换全半角
# - { when: always, toggle: full_shape, accept: Control+Shift+percent } # 切换全半角
# emacs_editing:
- { when: composing, accept: Control+p, send: Up }
- { when: composing, accept: Control+n, send: Down }
- { when: composing, accept: Control+b, send: Left }
- { when: composing, accept: Control+f, send: Right }
- { when: composing, accept: Control+a, send: Home }
- { when: composing, accept: Control+e, send: End }
- { when: composing, accept: Control+d, send: Delete }
- { when: composing, accept: Control+k, toggle: xxxxx } #释放Ctrl+k=ctrl+del 万象用来调序,且删除属于低频场景,建议双手操作
# - { when: composing, accept: Control+h, send: BackSpace }
- { when: composing, accept: Control+g, send: Escape }
# - { when: composing, accept: Control+bracketleft, send: Escape }
# - { when: composing, accept: Control+y, send: Page_Up }
# - { when: composing, accept: Alt+v, send: Page_Up }
# - { when: composing, accept: Control+v, send: Page_Down }
# optimized_mode_switch:
# - { when: always, accept: Control+Shift+space, select: .next }
# - { when: always, accept: Shift+space, toggle: ascii_mode }
# - { when: always, accept: Control+comma, toggle: full_shape }
# - { when: always, accept: Control+period, toggle: ascii_punct }
# - { when: always, accept: Control+slash, toggle: traditionalization }
# 将小键盘 0~9 . 映射到主键盘,数字金额大写的 Lua 如 R1234.5678 可使用小键盘输入
- {accept: KP_0, send: 0, when: composing}
- {accept: KP_1, send: 1, when: composing}
- {accept: KP_2, send: 2, when: composing}
- {accept: KP_3, send: 3, when: composing}
- {accept: KP_4, send: 4, when: composing}
- {accept: KP_5, send: 5, when: composing}
- {accept: KP_6, send: 6, when: composing}
- {accept: KP_7, send: 7, when: composing}
- {accept: KP_8, send: 8, when: composing}
- {accept: KP_9, send: 9, when: composing}
- {accept: KP_Decimal, send: period , when: composing}
- {accept: KP_Multiply, send: asterisk, when: composing}
- {accept: KP_Add, send: plus, when: composing}
- {accept: KP_Subtract, send: minus, when: composing}
- {accept: KP_Divide, send: slash, when: composing}
- {accept: KP_Enter, send: Return, when: composing}
wanxiang_pro.schema.yaml
我没有采用custom的方式,而是直接修改pro文件,再在每次更新时将当前文件和新文件diff一下,比对是否有额外修改。如果有,则修改当前文件,然后将下载下来的方案中除pro-schema外的其他文件覆盖rime文件夹内文件。
开头修改了一下说明,加入版本号以便我自己知道从哪个版本的万象方案里修改而来。
删除了mixcode、english和reverse方案,不需要英语单词、混合输入与反查。
# Rime schema
# encoding: utf-8
# 方案说明
schema:
schema_id: wanxiang_pro
name: 万象拼音PRO
version: "LTS"
author:
- amzxyz
description: |
高度裁切的万象拼音,15.9.9保留了几个开关,默认开启了emoji
# 开关
# reset: 默认状态。注释掉后,切换窗口时不会重置到默认状态。
# states: 方案选单显示的名称。可以注释掉,仍可以通过快捷键切换。
# abbrev: 默认的缩写取 states 的第一个字符,abbrev 可自定义一个字符
switches:
- name: full_shape #全角、半角字符输出
states: [ 半角, 全角 ]
- name: emoji #候选出现emoji滤镜,会显示在相应的候选后面,万象侧重于tips提示,避免候选被占用,因此默认为reset: 0,归属opencc emoji滤镜
states: [ 表情关, 表情开 ]
reset: 1默认关闭了声调转换
- name: prediction
states: [ 预测关, 预测开 ] # 这个名称能用于插件也能用于万象的lua实现,用来开启关闭预测功能
- options: [ raw_input, tone_display, full_pinyin ] #开启后在输入编码的位置实时转换为带声调全拼或者不带声调全拼,不开启则采用系统配置原始编码,影响的是preedit_format,归属:super_preedit.lua
states: [ 原编码, 有声调, 无声调 ]
reset: 0 #对于开关组从0开始数,第几个就reset几可设为默认
- options: [ s2s, s2t, s2hk, s2tw ] # 简繁转换开关组,可以在一个空选项和多个实际“- simplifier@s2hk”引入的项目之前切换,这是一个开关组,你可以将其中任意一个s2s等设置为toggle快捷键,多次按下将轮询
states: [ 简体, 通繁, 港繁, 臺繁 ]关闭了简码,不需要的功能
- name: abbrev
states: [ 简码关, 简码开 ]
reset: 0
- name: char_priority #多体现在编码重合但候选有单字或者多字的情况`引导的辅码查词时是否单字优先,全拼常见,类似于特定编码情况下、反查状态下的调序能力。归属:super_lookup.lua
states: [词组先, 单字先]输入引擎将不需要的功能删得差不多了,只留下必要的几个lua脚本
# 输入引擎
engine:
processors:
- lua_processor@*wanxiang.user_predict*P #靠自己养的专属预测联想处理器,不再依赖前端插件以及固定数据
- lua_processor@*wanxiang.super_processor #KP小键盘、字母选词、符号快打、超强分词、重复限制、退格限制、声调回退、以词定字
- lua_processor@*wanxiang.super_sequence*P #手动排序,高亮候选 ctrl+j左移动 ctrl+k 右移动 ctrl+l 移除位移 ctrl+p 置顶
- ascii_composer #处理英文模式及中英文切换
- recognizer #与 matcher 搭配,处理符合特定规则的输入码,如网址、反查等 tags
- key_binder #在特定条件下将按键绑定到其他按键,如重定义逗号、句号为候选翻页、开关快捷键等
- lua_processor@*wanxiang.key_binder #绑定按键扩展能力,支持正则扩展将按键生效情景更加细化
- speller #拼写处理器,接受字符按键,编辑输入
- punctuator #符号处理器,将单个字符按键直接映射为标点符号或文字
- selector #选字处理器,处理数字选字键〔可以换成别的哦〕、上、下候选定位、换页
- navigator #处理输入栏内的光标移动
- express_editor #编辑器,处理空格、回车上屏、回退键
segmentors:
- ascii_segmentor #标识英文段落〔譬如在英文模式下〕字母直接上屛
- matcher #配合 recognizer 标识符合特定规则的段落,如网址、反查等,加上特定 tag
- abc_segmentor #标识常规的文字段落,加上 abc 这个 tag
- affix_segmentor@add_user_dict #自造词加词 tag
- punct_segmentor #标识符号段落〔键入标点符号用〕加上 punct 这个 tag
- fallback_segmentor #标识其他未标识段落,必须放在最后帮助tag模式切换后回退重新处理
translators:
- punct_translator #配合 punct_segmentor 转换标点符号
- script_translator #脚本翻译器,用于拼音、粤拼等基于音节表的输入方案
- lua_translator@*wanxiang.user_predict*T #靠自己养的专属预测联想处理器,不再依赖前端插件以及固定数据
- lua_translator@*wanxiang.shijian #农历、日期、节气、节日、时间、周、问候模板等等,触发清单看下文
- table_translator@custom_phrase #自定义短语 custom_phrase.txt,用于置顶自定义编码候选词
- script_translator@user_dict_set #自造词之使用词汇入口
- script_translator@add_user_dict #自造词之制造词汇入口
filters:
- lua_filter@*wanxiang.auto_phrase #无感造词,英文造词
- lua_filter@*wanxiang.charset_filter #放replacer前面,全方位自定义的字符集过滤器,支持繁体字符集开放
- lua_filter@*wanxiang.super_comment_preedit #放其他需要注释处理器后面,会有清空注释的操作,超级注释模块,支持错词提示、辅助码显示,部件组字读音注释,支持个性化配置和关闭相应的功能,详情搜索super_comment进行详细配置
- lua_filter@*wanxiang.super_replacer #OpenCC替代器,更灵活的处理方式,更自由的自定义方式,支持简繁转换、简码模式、支持候选替换、注释替换、候选派生等等
- lua_filter@*wanxiang.super_filter #先进行字符过滤后简繁转换,这样能繁体继承简体权重。本质功能相关功能见Lua文件
- lua_filter@*wanxiang.super_sequence*F #放去重前,接管排序索引固定,手动排序,对高亮候选 ctrl+j左移动 ctrl+k 右移动 ctrl+0 移除位移
- lua_filter@*wanxiang.user_predict*F #用于输入编码后的上下文调频
- uniquifier #去重,必须在最后语法模型配置,与上游保持一致
grammar:
language: wanxiang-lts-zh-hans
collocation_max_length: 8
collocation_min_length: 2
collocation_penalty: -10
non_collocation_penalty: -5
weak_collocation_penalty: -100
rear_penalty: -5超级注释,有一点点用,比如能清晰看出来哪些词是用户词典的,哪些是内置的
super_comment: # 超级注释模块,子项配置 true 开启,false 关闭
candidate_length: 1 # 候选词辅助码提醒的生效长度,0为关闭 但同时清空其它,应当使用上面开关来处理
corrector_type: "〔comment〕" # 随意更换左右括号,比如"〔comment〕" 不加括号为无括号,comment占位不能动
cand_type:
user_phrase: "⁺"
sentence: ""
phrase: ""
table: ""
user_table: ""
completion: ""
abbrev: ""
predict: ""
fallback: "~"与上游保持一致
super_processor:
enable_backspace_limit: true # 开启/关闭退格限制
enable_seg_loop: true # 开启/关闭分词符(')循环
enable_tone_fallback: true # 启用声调回退
enable_predict_space: false # 启用联想空格打断,直接上屏空格并清空联想,对齐大厂,如果用原生librime-predict这个还有用留着
kp_number_mode: auto # 小键盘模式 (auto / compose / select)
limit_repeated: "8,40" #格式:"最大重复声母数,最大候选字数"
select_character: "[,]" # 开启以词定字,自动拆解第一位上屏首字,第二位上屏尾字
# 下面这些写法都支持:
# select_character: "[,]" # [ 上屏首字,] 上屏尾字(推荐)
# select_character: "bracketleft, bracketright" # [ 上屏首字,] 上屏尾字(英文全拼)
user_predict:
db_name: lua/predict # 数据库名称(默认 predict,将生成 predict.userdb 文件夹)
enable_post_predict: true # 上屏后预测
enable_context_reorder: true # 输入时调频
enable_fallback_reorder: true # 同码回删再输首次交换
max_candidates: 10 # 屏幕最多显示的联想词数量
max_predictions: 3 # 连续触发预测的最高次数限制
expiry_days: 90 # 绝对寿命(天):不命中则物理销毁
activation_days: 7 # 激活期限(天):冷冻期内输入第2次转正
max_memory_branches: 15 # 分支上限:单前缀最多保留15个后续预测
decay_rate: 0.85 # 衰减率:单日时间权重打 85 折
enable_predict_space: false # true: 按空格上屏空格; false:空格提交候选。一般手机开电脑关,空格当上屏则,Tab、Alt按键当作空格
context_timeout: 5000 # 上文超时时间毫秒
custom_classifiers: # 数字后量词调频,如平时chuan传,输入数字后,首选为串,结果如:1串,想关闭清空列表即可
- 个只名位口头匹条群批伙多 # 人物动物
- 张把件台部块根颗粒滴片朵面扇顶栋座所辆艘架盏支枝杆 # 物品建筑
- 双对副套打串束排阵堆叠摞扎 # 成组集合
- 杯瓶盒包份碗锅盆桶袋罐盘 # 包装容器
- 次场局回趟顿番遍声项宗桩款步招 # 动作事件
- 年月天周岁秒分刻代期届任夜季 # 时间周期
- 本册篇首句段卷幅节堂门帖字行 # 文化作品
- 米寸尺里斤两吨克升元角毛笔百千万亿 # 度量货币调整音调输入显示成什么字符,比如输入7显示成上标1
#常规状态下数字转换成相应的字符,由超级preedit接管
tone_preedit:
"7": "¹"
"8": "²"
"9": "³"
"0": "⁴"自定义了控制排序的键位
super_sequence: # Lua 配置:手动排序的快捷键 super_sequence.lua,不要用方向键,各种冲突,一定要避免冲突
db_name: "lua/sequence"
up: "Control+j" # 上移
down: "Control+k" # 下移
reset: "Control+l" # 重置
pin: "Control+p" # 置顶好像是候选词自动替换,留了一个emoji,删掉了简写
super_replacer:
db_name: lua/replacer
delimiter: "|"
comment_format: "〔%s〕"
chain: true #true表示流水线作业,上一个option产出交给下一个处理,典型的s2t>t2hk=s2hk,false就是并行,直接用text转换
rules:
# 场景1:输入 '哈哈' -> 变成 '1.哈哈 2.😄'
- option: emoji # 开关名称与上面开关名称保持一致
mode: append # 新增候选append 替换原候选replace 替换注释comment 简码模式abbrev匹配输入编码置顶词组
comment_mode: none # 注释模式: "append"(原候选注释继承), "text"(原候选文本放在注释), "none"(空,默认)
tags: [abc] # 生效的tag
prefix: "_em_" # 前缀用于区分同一个数据库的不同用途数据
files:
- lua/data/emoji.txt没改动,保留原样
# 场景3:用于常驻的直接替换 option: true
- option: true
mode: append # <--- 新增候选模式
comment_mode: none
tags: [abc]
prefix: "_ot_"
files:
- lua/data/others.txt
# 场景4:用于简繁转换的直接替换
- option: [ s2t, s2hk, s2tw ] #后面依赖这条流水线有一个开关为true这条流水线就能工作
mode: replace # <--- 替换原候选模式
comment_mode: append
sentence: true # <--- 句子级别替换
tags: [abc]
prefix: "_s2t_"
files:
- lua/data/STCharacters.txt
- lua/data/STPhrases.txt
- option: s2hk
mode: replace # <--- 替换原候选模式
comment_mode: append
sentence: true # <--- 句子级别替换
tags: [abc]
prefix: "_s2hk_"
files:
- lua/data/HKVariants.txt
- option: s2tw
mode: replace # <--- 替换原候选模式
comment_mode: append
sentence: true # <--- 句子级别替换
tags: [abc]
prefix: "_s2tw_"
files:
- lua/data/TWVariants.txt
# 字符集过滤lua
# a,通用规范汉字表
# b,GB2312,
# g,GBK,
# T,Big5,(台港澳常用)
# j,简体,OpenCC (t2s)
# f,通用繁体,OpenCC (s2t)
# h,香港繁体, OpenCC (s2hk)
# t,台湾繁体, OpenCC (s2tw)
# u,基本区,U+4E00 - U+9FFF
# A-I,扩展 A-I 区,U+3400 及各扩展区 (支持到 Ext-I)
# c,兼容区汉字
# 你可以通过黑白名单微调你自己每个开关下面的字符集过滤清单,主数据库位于lua/charset.reverse.bin不可编辑
# 你可以按上面提到的规则代号在base处填写上基础集,还可以在每一个开关的开白名单设置微调数据,就像默认添加的字符集过滤在8105基础上新增了一些
# 你可以定义多个开关,多个开启状态的开关求并集,比如charset_filter开着,s2hk也开着,那么就会显示这两个集合的所有汉字
# 优雅的地方在于s2hk开着,charset_filter关着 我们照样能使用 港繁能用到的所有字,是真正的本体,无关字会被过滤,而当都开着则是享受简体转换成繁体的后的结果
# 这个设计真正的兼容了简繁转换与字符集过滤的矛盾,还能满足用户多种自定义需求,你可以在开关增加类别,并在charset下面新增option类去选择按照字区去过滤,等多种组合方式
charset:
- option: charset_filter
base: a #可以填入多个类别如aj
addlist:
- "诶濛硷氽尛躝〇冇吔咗囧屌鲶芶咲畑垅𰻝𰻞龍朙"
blacklist: []
- option: s2t
base: fa
addlist: []
blacklist: []
- option: s2hk
base: ha
addlist: []
blacklist: []
- option: s2tw
base: ta
addlist: []
blacklist: []自定义了时间格式和排序,没用过农历或者节气之类,只用sj、rq和dj这三个,同时稍微统一了一下三者格式的顺序。
#shijian:仅支持修改前缀,为了固定习惯,后两码写死,如有需求lua中修改
#时间:osj 或者 /sj
#日期:orq 或者 /rq
#农历:onl 或者 /nl
#星期:oxq 或者 /xq
#今年第几周:oww 或者 /ww
#节气:ojq 或者 /jq
#日期+时间:odt 或者 /dt
#时间戳:ott 或者 /tt
#大写N日期:N20250315 或者N0312不带年
#节日:ojr 或者 /jr
#问候模板:/day 或者 oday
# 通用日期时间格式化函数(供 /rq、/sj、/dt、N0101、N20150101 场景复用)
# 支持转义:
# \X —— 转义单个字符 X,按字面量输出(如 \Y \m \H 等)
# [[...]] —— 区块整体按字面量输出
#
# 约定占位符:
# 【日期】
# Y 四位年份 0000-9999 例:2025
# y 两位年份 00-99 例:25
# m 月(前导零) 01-12 例:02
# n 月(不带前导零) 1-12 例:2
# d 日(前导零) 01-31 例:09
# j 日(不带前导零) 1-31 例:9
#
# 【时间】
# H 24小时(前导零) 00-23 例:08
# G 24小时(不带零) 0-23 例:8
# I 12小时(前导零) 01-12 例:08
# l 12小时(不带零) 1-12 例:8 (注意是小写 L)
# M 分钟(前导零) 00-59 例:05
# S 秒(前导零) 00-59 例:09
# p am/pm(小写) am / pm
# P AM/PM(大写) AM / PM
# 【时区】
# O 带冒号格式 +08:00、-04:30、+05:45
# o 不带冒号格式 +0800、-0430、+0545
# A 中文时段 凌晨 / 上午 / 中午 / 下午 / 晚上
date_formats:
- "Y年n月j日"
- "Y.m.d"
- "Y-m-d"
- "Ymd"
- "n月j日"
time_formats:
- "H时M分"
- "H:M"
- "H-M-S"
- "HM"
- "H点M分S秒"
datetime_formats:
- "Y年m月d日H时M分"
- "Y-m-d H:M:S"
- "Y-m-d-H-M-S"
- "YmdTHMS"
- "Y年m月d日 H点M分S秒"pro版本方案默认关闭自动调频,与上游保持一致
# 主翻译器,拼音
translator:
dictionary: wanxiang_pro # 挂载词库 wanxiang.dict.yaml
# packs: user #导入根目录下名称为user.dict.yaml的自定义固定词典
# prism: double_pinyin # 多方案共用一个词库时,为避免冲突,需要用 prism 指定一个名字。
enable_completion: true # 启用候选词补全
# user_dict: zrm.userdb # 用户词典的文件名称
# db_class: tabledb #开启后就不会产生zrm.userdb这样的文件夹,会直接输出文本zrm.txt同时无法使用同步能力
enable_user_dict: false # 是否开启自动调频
contextual_suggestions: false #模型用来开启词组权重预测,效果一般关闭
max_homophones: 8
max_homographs: 8
# disable_user_dict_for_patterns:
# - "^[a-z]{1,6}" #基本的6码3字不调频
enable_correction: false #是否开启自动纠错
initial_quality: 4 # 初始质量拼音的权重应该比英文大
spelling_hints: 50 # 将注释以词典字符串形式完全暴露,通过super_comment.lua完全接管,灵活配置。
always_show_comments: true # Rime 默认在 preedit 等于 comment 时取消显示 comment,这里强制一直显示,供super_comment_preedit.lua做判断用。
comment_format: #将注释以词典字符串形式完全暴露,通过super_comment.lua完全接管,灵活配置。为用户自定义短语文件改个其他名会方便很多,避免被替换掉。我把 custom_phrase 改成了 tomoe_phrase
# 自定义短语
custom_phrase:
dictionary: ""
user_dict: tomoe_phrase # 需要手动创建 custom_phrase.txt 文件
db_class: stabledb
enable_completion: false # 补全提示
enable_sentence: false # 禁止造句
initial_quality: 99 # custom_phrase 的权重应该比 pinyin 和 wanxiang_en 大auto_phrase.lua总是会尝试使用wanxiang_english方案,这里保留需要的dictionary路径避免报错。
# 中文、英文、数字、符号等混合词汇
wanxiang_english:
dictionary: wanxiang_english由于我把其他的东西删得差不多了,所以只有更改后的符号、时间等统一触发键 ; 与添加自造词键 “
# 处理符合特定规则的输入码,如网址、反查
recognizer:
import_preset: default # 从 default.yaml 继承通用的
patterns: # 再增加方案专有的:
punct: "^;([0-9]|10|[A-Za-z]+)$" # 响应 symbols.yaml 的 symbols
add_user_dict: "^``[A-Za-z/`']*$" #自造词与上游保持一致
# 标点符号
# punctuator 下面有三个子项:
# 设置为一个映射,就自动上屏;设置为多个映射,如 '/' : [ '/', ÷ ] 则进行复选。
# full_shape: 全角没改,使用预设值
# half_shape: 标点符号全部直接上屏,和 macOS 自带输入法的区别是
# '|' 是半角的,
# '~' 是半角的,
# '`'(反引号)没有改成 '·'(间隔号)。
# symbols Rime 的预设配置是以 '/' 前缀开头输出一系列字符,自定义的修改 symbols.yaml
punctuator:
digit_separators: ":,." #数字分隔符
__include: wanxiang_symbols:/symbol_table # 从 symbols.yaml 导入配置
# 从 default 继承快捷键
key_binder:
import_preset: default # 从 default.yaml 继承通用的时间触发键 ;
# Lua 配置: shijian.lua 的引导符,涉及:日期、时间、节日、节气、生日、问候模板等功能
shijian_keys: [";"]自定义按键分布。我把 tab 和 shift+tab 设置成了翻页,然后 - 和 = 设置成了移动词
bindings: # 也可以再增加方案专有的
- { when: has_menu, accept: Shift+Tab, send: Page_Up }
- { when: has_menu, accept: Tab, send: Page_Down }
# Option/Alt + ←/→ 切换光标至下/上一个拼音
- { when: always, toggle: ascii_punct, accept: Control+Shift+3 } # 切换中英标点
- { when: always, toggle: ascii_punct, accept: Control+Shift+numbersign } # 切换中英标点
- { when: always, toggle: s2t, accept: Control+Shift+4 } # 切换简繁
- { when: always, toggle: s2t, accept: Control+Shift+dollar } # 切换简繁
- { when: always, toggle: full_shape, accept: Control+Shift+1 } # 切换全半角
- { when: always, toggle: full_shape, accept: Control+Shift+exclam } # 切换全半角
- { when: composing, accept: minus, send: Shift+Left }
- { when: composing, accept: equal, send: Shift+Right }
- { when: composing, accept: Control+w, send: Control+Delete }这一行的作用是输入音码之后通过双击 ” 自动进入造词模式
# 当输入编码后发现没有词,则通过双击``进入造词模式而且不需要删除编码,这个功能与``直接引导相呼应相配合
- { match: "^.*`$", accept: "`", send_sequence: '{BackSpace}{Home}{`}{`}{End}' }与上游保持一致
editor:
bindings:
space: confirm # 空格键:上屏候选项
Return: commit_raw_input # 回车键:上屏原始输入
Control+Return: commit_script_text # Ctrl+回车键:上屏变换后输入(经过 preedit转换的)
Control+Shift+Return: commit_comment # Ctrl+Shift+回车键:上屏 comment
BackSpace: revert # 退格键:向前删除(撤消上次输入)
Delete: delete # Delete 键:向后删除
Control+BackSpace: back_syllable # Ctrl+退格键:删除一个音节
Control+Delete: delete_candidate # Ctrl+Delete键:删除或降权候选项
Escape: cancel # Esc 键:取消输入
navigator:
bindings:
Left: left_by_char_no_loop
Right: right_by_char_no_loop
Shift+Left: left_by_syllable
Shift+Right: right_by_syllable
# 拼写设定
speller:
# table_translator翻译器,支持自动上屏。例如 “zmhu”可以自动上屏“怎么回事”
# auto_select: true
# auto_select_pattern: ^[a-z]+/|^[a-df-zA-DF-Z]\w{3}|^e\w{4}这里用于设置什么按键可以直接上屏,由于我们需要 ; 触发时间或符号, ` 触发造词,因此将这俩加进去,把斜杠取出来。
# 如果不想让什么标点直接上屏,可以加在 alphabet,或者编辑标点符号为两个及以上的映射
alphabet: zyxwvutsrqponmlkjihgfedcbaZYXWVUTSRQPONMLKJIHGFEDCBA1234567890`;
# initials 定义仅作为始码的按键,排除 ` 让单个的 ` 可以直接上屏
initials: zyxwvutsrqponmlkjihgfedcbaZYXWVUTSRQPONMLKJIHGFEDCBA;与上游保持一致
delimiter: " '" # 第一位<空格>是拼音之间的分隔符;第二位<'>表示可以手动输入单引号来分割拼音。
visual_delimiter: " " # super_preedit.lua配置:是否让分隔符号跟着一起转换,例如nǐ'hǎo 在实际使用中表现出视觉拥挤,我们可以让delimiter平时是'转换为拼音的时候使用空格nǐ hǎo,更符合实际。启用小鹤双拼
algebra:
__patch:
#- 模糊音 #模糊音选择性开启
- wanxiang_algebra:/pro/小鹤双拼 #拼音转双拼码
- wanxiang_algebra:/pro/间接辅助 #辅助码部分与上游保持一致
user_dict_set:
dictionary: wanxiang_pro
initial_quality: 2.5
enable_completion: false
enable_sentence: false
core_word_length: 4 # >0 启用,按段学词 + 相邻段拼接
max_word_length: 7 # >0 启用,过长短语不记整词,只加元素权重
contextual_suggestions: false
max_homophones: 8
max_homographs: 8
spelling_hints: 50
comment_format:
enable_user_dict: true
user_dict: zc
# 自定义词典加词(ac引导)
add_user_dict:
tag: add_user_dict
dictionary: wanxiang_pro
initial_quality: -1
user_dict: zc
enable_completion: true # 提前显示尚未输入完整码的字〔仅 table_translator 有效〕
enable_user_dict: true
spelling_hints: 50
enable_auto_phrase: true # lua造词功能,在custom开启,相关功能位于auto_phrase.lua,开启后:模型能造的句子不造词,现有的词不造词,只造词库没有的,选词可造词
comment_format:
prefix: "``"
tips: "〔开始造词〕"squirrel.custom.yaml
这个和 weasel.custom.yaml 都没啥好说的,外观配置罢了。
patch:
show_notifications_when: appropriate
show_notifications_via_notification_center: true
app_options: {}
style:
inline_preedit: true # 在文本框顯示輸入串
inline_candidate: false # 在文本框顯示首選項
translucency: true # 透明度總開關
# 淺色主题
color_scheme: wechat
# 深色主题
color_scheme_dark: apathy
# 默認界面設置 (會被具體主題覆寫)
font_point: 14
font_face: LXGW WenKai
corner_radius: 5
# hilited_corner_radius: 5
line_spacing: 8
hilite_spacing: 6
spacing: 12
text_orientation: horizontal # horizontal | vertical
preset_color_schemes:
wechat:
name: "高仿微信输入法"
author: "Lufs X <i@isteed.cc>"
font_face: "PingFangSC-Regular"
font_point: 18
label_font_face: "PingFangSC-Regular"
label_font_point: 16
comment_font_face: "PingFangSC-Regular"
comment_font_point: 16
candidate_format: "%c\u2005%@"
candidate_list_layout: linear
text_orientation: horizontal
inline_preedit: true
corner_radius: 7
hilited_corner_radius: 7
border_height: -2
color_space: display_p3
back_color: 0xFFFFFF
border_color: 0xFFFFFF
candidate_text_color: 0x444444
comment_text_color: 0x8E8E8E
label_color: 0x888785
hilited_candidate_back_color: 0xaf9a23
hilited_candidate_text_color: 0xFFFFFF
hilited_comment_text_color: 0xF0F0F0
hilited_candidate_label_color: 0xFFFFFF
text_color: 0xFFFFFF
hilited_text_color: 0xD8000000
apathy:
name: 冷漠/Apathy
author: LIANG Hai
candidate_list_layout: linear # 水平排列
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 #拼音等提示文字颜色
app_options:
com.google.Chrome:
# 規避 https://github.com/rime/squirrel/issues/435
inline: true
ru.keepcoder.Telegram:
# 規避 https://github.com/rime/squirrel/issues/475
inline: trueweasel.custom.yaml
patch:
app_options:
firefox.exe:
inline_preedit: true # 行内显示预编辑区:规避 <https://github.com/rime/weasel/issues/946>
style:
color_scheme: wechat # 默认配色方案
# 全局字体
# 格式:字体1:起始码位:结束码位:字重:字形,字体2……,字体会依次 fallback
# 详细设定请参考 <https://github.com/rime/weasel/wiki/字體設定>
font_face: "Segoe UI Emoji, HarmonyOS Sans SC, SF Pro, Noto Color Emoji"
label_font_face: "HarmonyOS Sans SC" # 标签字体
comment_font_face: "HarmonyOS Sans SC" # 注释字体
font_point: 12 # 全局字体字号
label_font_point: 11 # 标签字体字号,不设定 fallback 到 font_point
comment_font_point: 11 # 注释字体字号,不设定 fallback 到 font_point
inline_preedit: true # 行内显示预编辑区:true;false
preedit_type: composition # 预编辑区内容:composition(编码); preview(选中的候选);preview_all(全部候选)
fullscreen: false # 候选窗口全屏显示:true;false
horizontal: true # 候选项横排:true;false
vertical_text: false # 竖排文本:true;false
# text_orientation: horizontal # 文本排列方向,效果和 `vertical_text` 相同:horizontal;vertical
vertical_text_left_to_right: false # 竖排方向是否从左到右:true;false
vertical_text_with_wrap: false # 文本竖排模式下,自动换行:true;false
vertical_auto_reverse: false # 文本竖排模式下,候选窗口位于光标上方时倒序排列:true;false
label_format: "%s" # 标签字符:例如 %s. 效果为 1. 2. 3. ....
mark_text: "" # 标记字符,显示在选中的候选标签前,需要在配色方案中指定颜色;如该项为空字符串 "" 而配色方案中 hilited_mark_color 非透明色,则显示 Windows 11 输入法风格标记
ascii_tip_follow_cursor: false # 切换 ASCII 模式时,提示跟随鼠标,而非输入光标
enhanced_position: true # 无法定位候选框时,在窗口左上角显示候选框:true;false
display_tray_icon: false # 托盘显示独立于语言栏的额外图标:true;false
antialias_mode: default # 次像素反锯齿设定:default;force_dword;cleartype;grayscale;aliased
candidate_abbreviate_length: 30 # 候选项略写,超过此数字则用省略号代替。设置为 0 则不启用此功能
# mouse_hover_ms: 0 # ! 已弃用。鼠标悬停选词响应时间(ms),设置为 0 时禁用该功能
hover_type: semi_hilite # 鼠标在候选窗口悬停时:none(无动作);hilite(选中鼠标下的候选);semi_hilite(高亮鼠标下的候选)
paging_on_scroll: true # 在候选窗口上滑动滚轮的行为:true(翻页);false (选中下一个候选)
click_to_capture: false # 鼠标点击候选项,创建截图:true;false
layout:
max_height: 0
max_width: 1200
min_width: 10
margin_x: 10
margin_y: 8
candidate_spacing: 24
hilite_spacing: 6
hilite_padding: 3
hilite_padding_x: 5
corner_radius: 8
round_corner: 8
shadow_radius: 4
preset_color_schemes:
wechat:
name: "微信/Wechat"
text_color: 0x424242
label_color: 0x999999
back_color: 0xFFFFFF
border_color: 0xFFFFFF
comment_text_color: 0x999999
candidate_text_color: 0x3c3c3c
hilited_comment_text_color: 0xFFFFFF
hilited_back_color: 0xaf9a23
hilited_text_color: 0xFFFFFF
hilited_label_color: 0xFFFFFF
hilited_candidate_back_color: 0xaf9a23
shadow_color: 0x20000000
附言:为什么移除lua脚本
我把整套lua脚本发给deepseek,让其帮我看看哪些最可能导致weasel不停dump,这是它给我的回答:
针对你提供的整套万象拼音 Lua 脚本,经过逐文件审查,以下几份 Lua 最有可能导致 Weasel 不停生成 dump 文件或频繁崩溃:
shijian.lua — 极高嫌疑
死循环风险:nl_shengri2 函数中的 while nl_shengri(y, m, d) == -1 do y = math.floor(y + 1) end
当 nl_shengri 因内部逻辑错误(如日期转换异常)始终返回 -1 时,该循环会无限递增年份,耗尽 Lua 整数或进入超长时间计算,导致 Weasel 进程卡死,被系统强制终止生成 dump。
触发场景:任何需要查询农历节日、节气或 /jr /day 等命令的输入,都会调用此函数。
建议修复:添加最大年份阈值(如当前年+100),超过即退出循环并返回无效提示。
super_lookup.lua — 高嫌疑
递归溢栈:match_fuzzy_recursive 函数使用深度递归进行模糊匹配,且未限制递归深度。当用户进行复杂反查操作(如输入较长辅码)时,递归层级可能瞬间突破 Lua 栈限制(默认约 200 层),直接引发栈溢出崩溃。
频繁调用:该函数在反查过滤阶段 func 中被调用,每次按键都会执行,任何异常输入都可能触发崩溃。
建议修复:改为非递归算法(如迭代或动态规划),或加入递归深度限制并提前终止。
super_calculator.lua — 中度嫌疑
潜在死循环:24 点计算 solve24 中嵌套多层循环,以及解方程函数(如 solveQuarticEquation)存在复杂的条件分支和大量运算。虽然单独执行不太会崩溃,但若与 V 键模式持续交互,可能导致超时或内存压力过大,引发间接崩溃。
高频调用:计算器在 V 模式下每次按键都会触发完整表达式求值,若表达式异常可能产生意想不到的死锁。
建议修复:为关键循环添加执行时间或迭代次数上限,采用尾调用优化或提前退出。
auto_phrase.lua / user_predict.lua — 低中度嫌疑
DB 操作异常:频繁操作 LevelDB 用户词典(Memory:update_userdict),若用户词典文件损坏或读写冲突,可能导致底层 C++ 抛出异常,触发 dump。
user_predict.lua 的清理命令:/clean 时全量遍历 DB 并批量删除,数据量大时可能占用过多 CPU / IO,间接影响稳定性。
建议修复:为数据库操作增加 .pcall 保护,并限制单次操作数量。
由于我并未用过农历或节气的日期计算功能,因此 shijian.lua 不是罪魁祸首。由于我很少使用反查和计算器功能,因此移除了相应的lua。