基本规则
安装以后产生一个系统目录和一个用户目录。所有有的可配置项可以在系统目录找到参考,但不要修改任何系统目录下的内容。
用户目录也不要直接修改yaml文件,而应该修改xxxx.custom.yaml,因为这些文件在升级和重装时不会被覆盖。
大多数时候修改下面三个配置文件就可以满足要求:
yaml文件的修改,用两个空格作为缩进的层级标志,千万不能使用TAB。
自己修改的.custom.yaml文件是补丁性质,所以一定要出现顶格写的【patch:】,且只能出现一次。
yaml文件中引号代表字符串,单引号双引号意义相同,转义字符仍旧是反斜线。大多数时候可以不打引号。
yaml的注释是#号,可以用在句首和句中。
包括yaml在内的所有配置文件都要保存成utf-8不带头格式。
如果要修改某一项,可以在项目之间加斜线,也可以利用缩进编写。比如,
patch: "menu/page_size": 9
也可以写成:
patch: menu: page_size: 9
但是,第二种写法意味着配置项【menu:】除了【page_size】以外的其它项目都被清空。所以,在不确定某一项目下是否有多个设定时,要谨慎使用第二种格式。换句话说,第一种用于修改和追加,第二种用于重新定义和删除。
使修改生效
每次修改后,在小狼毫图标上右键→重新部署,即可。
如果配置内容无法生效,小狼毫将使用上一次正确的配置。
如果配置有错误,可以查看【%temp%】目录下名为rime.weasel.XXXX的log文件。默认ERROR,WARINNING和INFO三种格式都有,只需查看ERROR文件即可。
用户词典的喂养也可以通过菜单里的“输出用户词典”和“合入用户词典”进行操作,跟资料同步完全不冲突。
资料同步
可以使用网盘同步。安装完成后,修改用户自定义目录下的「installation.yaml」,做如下修改(不加patch):
installation_id: "your-unique-id" sync_dir: 'C:\Users\dazhi\OneDrive\.waselconfig'
在另外的机器上设定成相同的installation_id即可实现资料同步(其实是人家网盘帮你做的。)
注意:
修改「default.custom.yaml」
这个文件针对的是所有的输入方案的共通配置项。
侯选项个数
patch: menu/page_size: 9
SHIFT上屏设置
原方案对shift的处理特别恶心,必须换掉。
patch: ascii_composer/switch_key: # ctrl&&shift 切换键效果 Caps_Lock: clear # 清屏幕 Shift_L: commit_code # 上档code Shift_R: commit_code # 上档code Control_L: noop # 不处理 Control_R: noop # 不处理
全局快捷键
Ctrl加点切换全角半角标点,
Ctrl+Shift+T切换简体繁体,后面简拼输入法还会再定义一次Ctrl+Shift+4。这组快捷键源自google习惯,经常冲突,争取以后改掉。
patch: key_binder: bindings: - { when: always, accept: Control+period, toggle: ascii_punct } # 切换西文/中文标点 Ctrl + . - { when: always, accept: Control+Shift+t, toggle: zh_simp } # Ctrl+Shift+T 切换简繁体(caps-lock模式下) - { when: always, accept: Control+Shift+T, toggle: zh_simp } # Ctrl+Shift+T 切换简繁体,正常模式时本句起作用,因为Shift按下时t已经被识别成大写的T - { when: has_menu, accept: period, send: Page_Down } # .翻页 - { when: paging, accept: comma, send: Page_Up } # ,翻页
优化主菜单
使用分级的方法配置实际上是删除不需要的
patch: schema_list: - {schema: luna_pinyin_simp} #只保留朙月拼音·简化字 switcher/caption: "【菜单】" #修改菜单名 switcher/option_list_separator: "/" #替换全角斜线 switcher/hotkeys: #呼叫菜单,删除默认的F4 - "Control+grave"
修改「weasel.custom.yaml」
这个配置文件主要管整体UI。
设置强制英文的应用
进入时不切换成中文的应用,就是配置项左边两个斜线中间的部分,注意所有程序名都要小写。
用斜线的方式添加是为了不覆盖已经存在的cmd.exe
patch: app_options/devenv.exe/ascii_mode: true #visual studio app_options/code.exe/ascii_mode: true #VScode app_options/wrwb.exe/ascii_mode: true #workbench app_options/fm.exe/ascii_mode: true #足球经理
修改输入框风格
方案可以用配色工具作成。如果手写的话一定要注意,颜色的顺序是#BBGGRR
patch: preset_color_schemes/aaa: #方案名(配置用) name: "aaa" #方案名(显示用) author: "大致" #作者(显示用) text_color: 0xffe8ca candidate_text_color: 0xfff8ee back_color: 0x8b4e01 border_color: 0x8b4e01 hilited_text_color: 0xfff8ee hilited_back_color: 0x8b4e01 hilited_candidate_text_color: 0x7ffeff hilited_candidate_back_color: 0xa95e01 comment_text_color: 0xc69664 "style/horizontal": true #横排 "style/font_face": "Microsoft YaHei" #微软雅黑 "style/font_point": 13 #字号 "style/layout/border_width": 1 #边框宽度 "style/color_scheme": aaa #与前面起的名字一致
修改「luna_pinyin_simp.custom.yaml」
为了方便维护,把自己的方案放在 atsymbols.yaml中。import_preset的意思是引入默认方案,参数是配置文件的名字。
自定义符号方案
patch: punctuator/import_preset: atsymbols recognizer/patterns/punct: '^[@/]([0-9]0?|[A-Za-z]+)$' #/开头输入各种符号,@开头输入数字变体,通过正则识别。
让输入框可以输入【/】
alphabet的意思是输入法可以接受的字符,这里还有两个,可以用于开头的字符和只能用于结尾的字符。但是这里用不上。
patch: speller/alphabet: 'zyxwvutsrqponmlkjihgfedcba/' #增加一个/用于符号输入
删除不需要的模糊音和错误拼写
从原版luna_pinyin_simp.schema.yaml中拷贝出来,采用分行模式,就是为了删除。这一part保留原项目,就是为了记录为什么要删。
patch: speller/algebra: #- erase/^xx$/ #闲的没事儿干敲两个x? - abbrev/^([a-z]).+$/$1/ #区别词里各个字的首字母,保留 - abbrev/^([zcs]h).+$/$1/ #zhchsh的精确识别,保留。“谬种流传”⇒“mzhlch” - derive/^([nl])ve$/$1ue/ #luenue转成lvenve,保留,习惯改不掉了。 #- derive/^([jqxy])u/$1v/ #看见鱼眼要挖去,不会犯的错误。 #- derive/un$/uen/ #不会犯的错误 #- derive/ui$/uei/ #不会犯的错误 #- derive/iu$/iou/ #不会犯的错误 #- derive/([aeiou])ng$/$1gn/ #不会犯的错误 #- derive/([dtngkhrzcs])o(u|ng)$/$1o/ #不会犯的错误 #- derive/ong$/on/ #不会犯的错误 #- derive/ao$/oa/ #不会犯的错误 #- derive/([iu])a(o|ng?)$/a$1$2/ #不会犯的错误
转换和翻译项
先从原版luna_pinyin_simp.schema.yaml中拷贝出来,主要是添加了lua函数显示日期时间数字大写等。
patch:
engine/translators:
- punct_translator #保留
- table_translator@custom_phrase #自定义短语识别,保留
- script_translator #不知道干什么的,保留
- lua_translator@time_translator #当前时间, time, shijian
- lua_translator@number_translator #数字转大小写中文 IXXXXXX
- lua_translator@date_translator #当前日期 date, riqi
- lua_translator@week_translator #星期几 xingqi, xqj
使用lua
patch: engine/translators: - punct_translator #保留 - table_translator@custom_phrase #自定义短语识别,保留 - script_translator #不知道干什么的,保留 - lua_translator@time_translator #当前时间, time, shijian - lua_translator@number_translator #数字转大小写中文 IXXXXXX - lua_translator@date_translator #当前日期 date, riqi - lua_translator@week_translator #星期几 xingqi, xqj
使用lua
外部接口见上面的lua_translator,@后面是自己定义的关键字。这个关键字要写在「rime.lua」中。
lua格式的注释是两个横线–
require()函数的参数要传用户目录下lua目录下XXX.lua文件的名字。
当前的「rime.lua」:
time_translator = require("time") number_translator = require("number") date_translator = require("date") week_translator = require("week")
lua的功能,只列一个time为例。文件名一定要是「time.lua」
input是输入键值的内容。每一个yield都是一个表示项。
local function translator(input, seg) if (input == "time" or input == "now" or input == "shj" or input == "shij" or input == "shijian") then yield(Candidate("time", seg.start, seg._end, os.date("%H:%M"), " ")) yield(Candidate("time", seg.start, seg._end, os.date("%H:%M:%S"), " ")) end end return translator
其余的lua就不贴了,github上都有。
修改「atsymbols.yaml」
这个文件就是前面提到修改「luna_pinyin_simp.custom.yaml」所用到的符号方案,完全可以不独立出来。独立出来只是为了清晰。
这个文件不带custom,所以没有patch!
符号表
自定义标点只需要定义半角的,全角基本没用,如果有需要加一个全角空格也就是了。
习惯源自谷歌输入法,只有@、~和$略作修改。
【-】开头是列表的意思,当一个按键只对应一个值是,值就会直接上到屏幕上,当有多个值时会出现选择列表。这也是之前很多教程把输入符号的开始标志改到@上的原因。
punctuator: half_shape: "!": "!" """: pair: - "“" - "”" "#": "#" "$": - "$" - "¥" "%": "%" "&": "&" "'": pair: - "‘" - "’" "*": "*" "+": "+" ",": "," "-": "-" ".": "。" "/": "/" "\": "、" ":": ":" ";": ";" "=": "=" "?": "?" "@": - "@" - "•" #中点号 - "℃" #摄氏度 - "℉" #华氏度 - "°" #度 "(": "(" ")": ")" "[": "【" "]": "】" "{": "「" "}": "」" "<": "《" ">": "》" "^": "……" "_": "——" "`": "·" "|": "|" "~": - "~" - "~"
增加的特殊符号
【/】开头显示符号,正常明月输入法不能用/作为识别标志,被我用别的方法修改了,见后。
拼音输入法数字被选择功能占用,正常字母包括/号后面都不能接数字,所以另外定义一个【@】开头的快捷键,用来输入数字相关的符号。
symbols: #符號、電腦 '/fh': [ ©, ®, ℗, ℠, ™, ℡, ℻, ‰, °, ÷, ×, ♩, ♪, ♫ ] #撲克 '/pk': [ ♠, ♥, ♣, ♦, ♤, ♡, ♧, ♢ ] #星號 '/xh': [ ★, ☆, ※, ⛤, ⛥, ⛦, ⛧, ✡, ❋, ❊, ❉, ❈, ❇, ❆, ❅, ❄, ❃, ❂, ❁, ❀, ✿, ✾, ✽, ✼, ✻, ✺, ✹, ✸, ✷, ✶, ✵, ✴, ✳, ✲, ✱, ✰, ✯, ✮, ✭, ✬, ✫, ✪, ✩, ✧, ✦, ✥, ✤, ✣, ✢ ] #方塊 '/fk': [ ■, □, ◆, ◇, ▞ ] #圓圈 '/yq': [ ⚪, ⚫, ◦, ◎ ] #三角 '/sj': [ △, ▲, ▼, ▽, ∴, ∵, ▶, ▷, ◀, ◁] #箭頭 '/jt': [ ⇒, ⇐, ↑, ↓, ←, →, ⇓, ⇑, ⇔, ↖, ↗, ↙, ↘, ↹, ↺, ↻, ⇄, ⇅, ⇋, ⇏, ⇖, ⇗, ⇘, ⇙, ⇠, ⇡, ⇢, ⇣, ⇦, ⇧, ⇨, ⇩, ⇳, ➠, ➤, ➥, ➦, ➨, ➳, ➴, ➵, ➶, ➷, ➸, ➹, ➼, ➽, ↕, ↔, ⇶, ➔, ➾ ] #數學 '/maths': [ ±, ÷, ×, ∈, ∏, ∑, -, +, <, ≮, =, ≠, >, ≯, ∕, √, ∝, ∞, ∟, ∠, ∥, ∧, ∨, ∩, ∪, ∫, ∮, ∴, ∵, ∷, ∽, ≈, ≌, ≒, ≡, ≤, ≥, ≦, ≧, ⊕, ⊙, ⊥, ⊿, ㏑, ㏒ ] #希臘 '/xl': [ α, β, γ, δ, ε, ζ, η, θ, ι, κ, λ, μ, ν, ξ, ο, π, ρ, σ, ς, τ, υ, φ, χ, ψ, ω ] '/xld': [ Α, Β, Γ, Δ, Ε, Ζ, Η, Θ, Ι, Κ, Λ, Μ, Ν, Ξ, Ο, Π, Ρ, Σ, Τ, Υ, Φ, Χ, Ψ, Ω ] #拼音、註音、聲調 '/py': [ ā, á, ǎ, à, ō, ó, ǒ, ò, ê, ê̄, ế, ê̌, ề, ē, é, ě, è, ī, í, ǐ, ì, ū, ú, ǔ, ù, ü, ǖ, ǘ, ǚ, ǜ ] '/sd': [ ˉ, ˊ, ˇ, ˋ, ˙] #數字、分數 '@0': [ 〇, 零, ₀, ⁰, ⓪, ⓿ , 0] '@1': [ 一, 壹, ₁, ¹, Ⅰ, ⅰ, ①, ➀, ❶, ➊, ⓵, ⑴, ⒈, 1, ㊀, ㈠, 弌, 壱, 幺, ㆒ ] '@2': [ 二, 貳, ₂, ², Ⅱ, ⅱ, ②, ➁, ❷, ➋, ⓶, ⑵, ⒉, 2, ㊁, ㈡, 弍, 弐, 貮, 㒃, 㒳, 兩, 倆, ㆓] '@3': [ 三, 叄, ₃, ³, Ⅲ, ⅲ, ③, ➂, ❸, ➌, ⓷, ⑶, ⒊, 3, ㊂, ㈢, 參, 参, 叁, 弎, 仨, ㆔] '@4': [ 四, 肆, ₄, ⁴, Ⅳ, ⅳ, ④, ➃, ❹, ➍, ⓸, ⑷, ⒋, 4, ㊃, ㈣, 亖] '@5': [ 五, 伍, ₅, ⁵, Ⅴ, ⅴ, ⑤, ➄, ❺, ➎, ⓹, ⑸, ⒌, 5, ㊄, ㈤, 㐅, 㠪, 𠄡 ] '@6': [ 六, 陸, ₆, ⁶, Ⅵ, ⅵ, ⑥, ➅, ❻, ➏, ⓺, ⑹, ⒍, 6, ㊅, ㈥, ↅ] '@7': [ 七, 柒, ₇, ⁷, Ⅶ, ⅶ, ⑦, ➆, ❼, ➐, ⓻, ⑺, ⒎, 7, ㊆, ㈦, 漆] '@8': [ 八, 捌, ₈, ⁸, Ⅷ, ⅷ, ⑧, ➇, ❽, ➑, ⓼, ⑻, ⒏, 8, ㊇, ㈧ ] '@9': [ 九, 玖, ₉, ⁹, Ⅸ, ⅸ, ⑨, ➈, ❾, ➒, ⓽, ⑼, ⒐, 9, ㊈, ㈨ ] '@10': [ 十, 拾, ₁₀, ¹⁰, Ⅹ, ⅹ, ⑩, ➉, ❿, ➓, ⓾, ⑽, ⒑, 10, ㊉, ㈩, 什 ]
自定义短语文件「custom_phrase.txt」
明月输入已经支持了自定义短语,不用再配置生效。创建一个名为「custom_phrase.txt」utf-8的文本文件,放到用户目录下。
内容为
自定义短语不是词典,不能简化识别。比如定义AA制的缩略码是aazhi,那么敲aaz的时候就不会被识别出来。
下面是简单例子,最后一个参数是优先级。数字越大优先级越高,优先级越高,该词越会被配在前面。
A片 apian 1 AA制 aazhi 1 装B zhuangb 2 装B犯 zhuangbfan 2
高级了~~
这个就有点高级了吧?着实看不懂呢。
关于这个输入法,我坑都挖了2年了,也没填。遇到了一大堆问题。
自从换了Linux作为主系统之后我也试过很多输入法,然后果不其然全部都是残疾。在Windows下用了十多年的搜狗在Windows上暴广告不说,在Linux上只有麒麟企业版,几乎没有任何正经功能,没法用。谷歌拼音已经没了。最后也换成Rime。
然后就Rime的官方文档就很奇葩,光是patch.yaml的写法就卡了我好几天,以至于开始怀疑我写了5年的dockerfile是不是都是误打误撞。社区文档就真的只有清一色复制粘贴,已经完全搜不到实质性内容了。奇葩的谷歌中文搜索结果甚至还没有有审查的必应好。
不同主机同步倒是挺容易,我都是用nextcloud或者freefilesync同步下就完事了。
配置修改我只保留了luna_pinyin,然后加了
“key_binder/bindings”:
– {accept: “KP_Enter”, send: Return, when: composing}
– {accept: minus, send: Page_Up, when: has_menu}
– {accept: equal, send: Page_Down, when: has_menu}
Linux下好几个按键行为都跟Windows下不一样。我也不知道现在改没改。
全角半角繁体简体我都是用Ctrl+`实现的。没做热键。我并没有加switcher/hotkeys,但是默认也是Control+grave,没F4了,诡异。
自定义符号我一直没搞定,当年忍着广告用搜狗就是因为他有V+数字的特殊符号输入,现在在Linux只能被迫用fcitx软键盘顶着。
lua_translator我也一直没搞定,我给Rime团队发issue,他们说fcitx版本的Rime是由Rime support for Fcitx团队专门负责的,我又问Rime support for Fcitx,他们说Rime的lua接口是由fcitx负责的,我又去问fcitx,他们说lua一直是好的。但是我复制粘贴了他们文档给的配置,永远不生效。感情踢皮球部分地区不分国界。反正Windows下时间输入是好的,Linux下就一直没成功过。
最为疑惑的还是导入词库,这个输入法的词库或者自己养,或者用现成的。网上文档都是流行搞清华THUOCL那词库,但是那词库都死了6年不说,当时就缺一堆词。然后是用搜狗词库,虽然比较麻烦,但可以抠月更版,然后很神奇的是文件小得可怕,缺词更严重。反正我导入了词库后最大的感觉就是跟没导入一样,纳闷是不是哪里错了然后去词库文件里搜,发现就是没收录,然后意外收获是发现词库收录了大量的错词和错音。最后词库还是得自己养。
最后就感觉反正能用了,至于为什么能用,以及怎么个能用法,我也不知道,也没体力研究了。反正就是能用了。新装系统时直接复制粘贴了整个~/.config/fcitx/rime然后继续能用,继续不知道是怎么回事,止步不前了。
其实最重要的是作者本人,这位作者写文档的风格是挺令人头大的。
Linux的问题帮不上忙。
如果你想用v开头加数字的话,拼音输入法是不行的,但是可以用大V开头。然后在输入法方案里加一句关于符号的正则:
然后照着正常方法弄就行。关键点就是这个输入法的拼音输入法,小写字母开头后面加不上数字。
词库我记得有种办法是用户词典管理-导出-清空词库-手动清除导出文件的垃圾-导入
Windows这边也有一个烦人的Bug,就是按下重新部署之后,系统通知是在激活输入法状态下下一次按下键盘时才弹出,这么多年了也是一直没更新过。
我试了一下之后发现了个非常奇妙的问题:
用V的话,=向后翻页是好的,但是-向前翻页坏掉了;,向前翻页是好的,.向后翻页是坏掉的。难道是走到lua数学逻辑里面去了?
用@却又是正常的。
改词库我都是直接干掉userdb.txt和dict.yaml。
翻页官方的快捷键,向后定义在has_menu里,向前要定义在paging里,不晓得是不是这原因。
就感觉其实作者弃坑了,然后没什么人维护,都是在互相扯皮,都很有亚洲程序员的风格。
唉,今天试了一下安卓版的rime,这些社区文档感觉就不是地球生物写的。
折腾了一下午,改了一堆配置文件,就是一句人话都打不出来。
我曾经在安卓上试过一阵,怎么改都难看,放弃了。
有些复杂,我还是用微软拼音吧
这个我用了一段时间,win和Linux下,但是词库同步一直失败,于是两边养词库。但是后来随着win10一次更新,养了N久的词库都失效了,就懵了。
然后弃用。
用网盘同步啊。Win10自带的输入法我用着其实挺好的,忽然有一天升级把词库弄没了,我才把这输入法又捡回来。
Linux上用的比较好的输入法就是搜狗了,谷歌的也不错,不过词库有一些少!
我在Linux环境下用不到中文……
以前用windows的时候折腾过rime,还是从byvoid博客知道的。
对我来讲,输入法最头痛的还是临时性的中英切换,比如很多文档和聊天支持/命令,命令词是英文的,然后就要切换。输入/自动切换成英文就好了。类似的场景还有很多。
还真只是备忘,从没听说过小狼毫输入法的,还想着文章内会有个输入法抓图,看看什么样子。
嗯。这个输入法挺久的了,五六年前比较火,现在都过流行了。这是个开源输入法,在不同平台上编出来的名字都不一样:Windows下叫小狼毫,MacOS下叫鼠须管,Linux下叫中州韵。
所以我现在就只用系统自带的输入法了,不折腾了。