▼ 本文更新于 [2026-05-05 二 20:02]

我的万象方案配置(裁切)


1. 前言

万象是个好方案,特别是加入音调之后,非常符合直觉,都不用拆字反查了。但是由于万象方案覆盖面很广,其实很多东西都是没必要的,添加了启用了反而可能影响性能。这里跟大家分享一下我自用的万象裁切方案,其中关闭了很多功能,但启用了音调输入和时间输入功能,性能比全启用的万象好一点。

2. default.custom.yaml

这里就只写改了什么地方,不过我基本也还是将原版复制过来再直接替换的。

patch:  # Rime default settings
  config_version: 'LTS'

启用pro方案

  schema_list:
    - schema: wanxiang_pro

为了把 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用这行会自动加点

这里将左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

一些个人风格的快捷键

  recognizer:
    patterns:
  key_binder:
    bindings:
      # 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+g, send: Escape }
      # 将小键盘 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}

3. 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

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                                    #去重,必须在最后

超级注释,有一点点用,比如能清晰看出来哪些词是用户词典的,哪些是内置的

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: "~"

调整音调输入显示成什么字符,比如输入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
       
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这三个,同时稍微统一了一下三者格式的顺序。

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秒"

为用户自定义短语文件改个其他名会方便很多,避免被替换掉。我把 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/`']*$"      #自造词

时间触发键 ;

  # Lua 配置: shijian.lua 的引导符,涉及:日期、时间、节日、节气、生日、问候模板等功能
  shijian_keys: [";"]

自定义按键分布。我把 tabshift+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}' }

这里用于设置什么按键可以直接上屏,由于我们需要 ; 触发时间或符号 ` 触发造词,因此将这俩加进去,把斜杠取出来。

  # 如果不想让什么标点直接上屏,可以加在 alphabet,或者编辑标点符号为两个及以上的映射
  alphabet: zyxwvutsrqponmlkjihgfedcbaZYXWVUTSRQPONMLKJIHGFEDCBA1234567890`;
  # initials 定义仅作为始码的按键,排除 ` 让单个的 ` 可以直接上屏
  initials: zyxwvutsrqponmlkjihgfedcbaZYXWVUTSRQPONMLKJIHGFEDCBA;

启用小鹤双拼

  algebra:
    __patch:
      #- 模糊音             #模糊音选择性开启
      - wanxiang_algebra:/pro/小鹤双拼     #拼音转双拼码
      - wanxiang_algebra:/pro/间接辅助     #辅助码部分

4. 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: true
      

5. weasel.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

© Published by Emacs 31.0.50 (Org mode 10.0-pre) | RSS Comment