Skip to content

Instantly share code, notes, and snippets.

@lotem
Created April 6, 2012 15:46
Show Gist options
  • Save lotem/2320943 to your computer and use it in GitHub Desktop.
Save lotem/2320943 to your computer and use it in GitHub Desktop.
【朙月拼音】模糊音定製模板
# luna_pinyin.custom.yaml
#
# 【朙月拼音】模糊音定製模板
# 佛振配製 :-)
#
# 位置:
# ~/.config/ibus/rime (Linux)
# ~/Library/Rime (Mac OS)
# %APPDATA%\Rime (Windows)
#
# 於重新部署後生效
#
patch:
'speller/algebra':
- erase/^xx$/ # 第一行保留
# 模糊音定義
# 需要哪組就刪去行首的 # 號,單雙向任選
#- derive/^([zcs])h/$1/ # zh, ch, sh => z, c, s
#- derive/^([zcs])([^h])/$1h$2/ # z, c, s => zh, ch, sh
#- derive/^n/l/ # n => l
#- derive/^l/n/ # l => n
# 這兩組一般是單向的
#- derive/^r/l/ # r => l
#- derive/^ren/yin/ # ren => yin, reng => ying
#- derive/^r/y/ # r => y
# 下面 hu <=> f 這組寫法複雜一些,分情況討論
#- derive/^hu$/fu/ # hu => fu
#- derive/^hong$/feng/ # hong => feng
#- derive/^hu([in])$/fe$1/ # hui => fei, hun => fen
#- derive/^hu([ao])/f$1/ # hua => fa, ...
#- derive/^fu$/hu/ # fu => hu
#- derive/^feng$/hong/ # feng => hong
#- derive/^fe([in])$/hu$1/ # fei => hui, fen => hun
#- derive/^f([ao])/hu$1/ # fa => hua, ...
# 韻母部份
#- derive/^([bpmf])eng$/$1ong/ # meng = mong, ...
#- derive/([ei])n$/$1ng/ # en => eng, in => ing
#- derive/([ei])ng$/$1n/ # eng => en, ing => in
# 樣例足夠了,其他請自己總結……
# 反模糊音?
# 誰說方言沒有普通話精確、有模糊音,就能有反模糊音。
# 示例爲分尖團的中原官話:
#- derive/^ji$/zii/ # 在設計者安排下鳩佔鵲巢,尖音i只好雙寫了
#- derive/^qi$/cii/
#- derive/^xi$/sii/
#- derive/^ji/zi/
#- derive/^qi/ci/
#- derive/^xi/si/
#- derive/^ju/zv/
#- derive/^qu/cv/
#- derive/^xu/sv/
# 韻母部份,只能從大面上覆蓋
#- derive/^([bpm])o$/$1eh/ # bo => beh, ...
#- derive/(^|[dtnlgkhzcs]h?)e$/$1eh/ # ge => geh, se => sheh, ...
#- derive/^([gkh])uo$/$1ue/ # guo => gue, ...
#- derive/^([gkh])e$/$1uo/ # he => huo, ...
#- derive/([uv])e$/$1o/ # jue => juo, lve => lvo, ...
#- derive/^fei$/fi/ # fei => fi
#- derive/^wei$/vi/ # wei => vi
#- derive/^([nl])ei$/$1ui/ # nei => nui, lei => lui
#- derive/^([nlzcs])un$/$1vn/ # lun => lvn, zun => zvn, ...
#- derive/^([nlzcs])ong$/$1iong/ # long => liong, song => siong, ...
# 這個辦法雖從拼寫上做出了區分,然而受詞典制約,候選字仍是混的。
# 只有真正的方音輸入方案纔能做到!但「反模糊音」這個玩法快速而有效!
# 模糊音定義先於簡拼定義,方可令簡拼支持以上模糊音
- abbrev/^([a-z]).+$/$1/ # 簡拼(首字母)
- abbrev/^([zcs]h).+$/$1/ # 簡拼(zh, ch, sh)
# 以下是一組容錯拼寫,《漢語拼音》方案以前者爲正
- derive/^([nl])ve$/$1ue/ # nve = nue, lve = lue
- derive/^([jqxy])u/$1v/ # ju = jv,
- derive/un$/uen/ # gun = guen,
- derive/ui$/uei/ # gui = guei,
- derive/iu$/iou/ # jiu = jiou,
# 自動糾正一些常見的按鍵錯誤
- derive/([aeiou])ng$/$1gn/ # dagn => dang
- derive/([dtngkhrzcs])o(u|ng)$/$1o/ # zho => zhong|zhou
- derive/ong$/on/ # zhonguo => zhong guo
- derive/ao$/oa/ # hoa => hao
- derive/([iu])a(o|ng?)$/a$1$2/ # tain => tian
# 分尖團後 v => ü 的改寫條件也要相應地擴充:
#'translator/preedit_format':
# - "xform/([nljqxyzcs])v/$1ü/"
@7900ms
Copy link

7900ms commented Jul 6, 2016

注意,本文件 ( luna_pinyin.custom.yaml 或 luna_pinyin_simp.custom.yaml ) 如果有这个选项
“ enable_charset_filter: true #启用罕见字過濾 ”
这个选项会和模糊音的生效发生冲突。如果打算启用模糊音,可以考虑注释掉这句

@sasuke6
Copy link

sasuke6 commented Jan 13, 2017

将模糊拼音模板设置到双拼custom.yaml文件下,模糊拼音失效,而且不能正常输入文字,双拼方案下的模糊音该如何配置?

@Sherlock-Holo
Copy link

咱明明打了补丁https://cfp.vim-cn.com/cbdg1/yaml ,也重启了fcitx,但是打zici并没有出现zhichi(支持),请问是什么问题?

@kopes18
Copy link

kopes18 commented Dec 10, 2017

小鹤双拼怎么办???????

@zyr517
Copy link

zyr517 commented Apr 9, 2018

小鹤模糊音配置的看这里

- erase/^xx$/
- abbrev/^([a-z]).+$/$1/
- abbrev/^([zcs]h).+$/$1/
- derive/^([zcs])h/$1/             # zh, ch, sh => z, c, s
- derive/^([zcs])([^h])/$1h$2/     # z, c, s => zh, ch, sh
- derive/^n/l/                     # n => l
- derive/^l/n/                     # l => n
- derive/([ei])n$/$1ng/            # en => eng, in => ing
- derive/([ei])ng$/$1n/            # eng => en, ing => in

#下面其他的配置略过……

@maonx
Copy link

maonx commented Apr 26, 2018

@zyr517 謝謝,小鶴雙拼模糊音可以成功使用了,不過只能修改原文件,修改custom文件無效.

@YangMame
Copy link

请问修改之后 出现:
E0730 15:17:29.046954 16565 deployment_tasks.cc:328] invalid schema definition in 'luna_pinyin.custom.yaml'.
应该如何解决?
谢谢!

@yurivikyi
Copy link

yurivikyi commented Sep 8, 2018

關於ian/uan = iang/uang 的模糊音設置,建議管理員將此添加入模板中

    - derive/([iu])an$/$lang/          # ian => iang, uan => uang
    - derive/([iu])ang$/$lan/          # iang => ian, uang => uan

@jinyuzu99
Copy link

jinyuzu99 commented Sep 15, 2019

小鹤模糊音配置的看这里

- erase/^xx$/
- abbrev/^([a-z]).+$/$1/
- abbrev/^([zcs]h).+$/$1/
- derive/^([zcs])h/$1/             # zh, ch, sh => z, c, s
- derive/^([zcs])([^h])/$1h$2/     # z, c, s => zh, ch, sh
- derive/^n/l/                     # n => l
- derive/^l/n/                     # l => n
- derive/([ei])n$/$1ng/            # en => eng, in => ing
- derive/([ei])ng$/$1n/            # eng => en, ing => in

#下面其他的配置略过……

不知为何无法使用, 一打字就进入全拼模式.

@ibibii
Copy link

ibibii commented Mar 5, 2020

小鹤双拼:
double_pinyin_mspy.schema.yaml
注意要将代码添加至“xform”代码段之前
参照:https://sun-v.github.io/2019/10/19/%E5%B0%8F%E7%8B%BC%E6%AF%AB%E8%BE%93%E5%85%A5%E6%B3%95%E6%A8%A1%E7%B3%8A%E9%9F%B3%E9%85%8D%E7%BD%AE/

使用pkyk pbyb 测试输入“拼音”

  • abbrev/^([az]).+$/$1/ #简拼(首字母)
  • abbrev/^([zcs]h).+$/$1/ #简拼(zh, ch, sh)
  • derive/^([zcs])h/$1/ # zh, ch, sh => z, c, s
  • derive/^([zcs])([^h])/$1h$2/ # z, c, s => zh, ch, sh
  • derive/([aei])n$/$1ng/ # en => eng, in => ing
  • derive/([aei])ng$/$1n/ # eng => en, ing => in
  • derive/([iu])an$/$lang/ # ian => iang, uan => uang
  • derive/([iu])ang$/$lan/ # iang => ian, uang => uan

横向显示:
在ibus设置横向,看运气
临时办法是创建 ~/.config/ibus/rime/build/ibus_rime.yaml,添加以下内容
style:
horizontal: true
然后部署
参照:rime/ibus-rime#52

@WangChChao
Copy link

小鹤双拼,我分不清
ie和ian(p和m上的韵母)
ve和uan(t和r上的韵母)
求解决方案

@nicball
Copy link

nicball commented Oct 1, 2020

你的配制覆盖了双拼自己的拼写运算,应使用"speller/algebra/+"。

@lotem
Copy link
Author

lotem commented Oct 3, 2020

你的配制覆盖了双拼自己的拼写运算,应使用"speller/algebra/+"。

這個補丁定製的輸入方案是【朙月拼音】,不是雙拼。
即便要用在雙拼方案上,也不能追加這些拼寫運算規則。而應在全拼轉雙拼之前先應用模糊音規則。

@skygunner
Copy link

请问 “朙月拼音”方案的简体模式, 和 "朙月拼音.简体字”方案,有什么不同?

@skygunner
Copy link

luna_pinyin.custom.yaml
这个是提供给 朙月拼音方案的简体字模式吧?

那如果要提供给 "朙月拼音.简体字” 方案,是不是改名成 luna_pinyin_simp.custom.yaml
就可以了?

@lotem
Copy link
Author

lotem commented Nov 12, 2020

luna_pinyin.custom.yaml
这个是提供给 朙月拼音方案的简体字模式吧?

那如果要提供给 "朙月拼音.简体字” 方案,是不是改名成 luna_pinyin_simp.custom.yaml
就可以了?

是的

请问 “朙月拼音”方案的简体模式, 和 "朙月拼音.简体字”方案,有什么不同?

没有本质不同。只是为了方便用家选择。

@ASC8384
Copy link

ASC8384 commented Mar 3, 2021

你的配制覆盖了双拼自己的拼写运算,应使用"speller/algebra/+"。

应该直接覆盖

可以参考一下这段代码

@BenSYZ
Copy link

BenSYZ commented Jun 2, 2021

你好,使用模糊音后是否可以实现在词语后面提示正确的拼音呀?

@VimWei
Copy link

VimWei commented Jun 2, 2021

你好,使用模糊音后是否可以实现在词语后面提示正确的拼音呀?

可以实现。我使用双拼+模糊音,输入后可以在词语后面提示正确的全拼。

translator/spelling_hints: 8

@BenSYZ
Copy link

BenSYZ commented Jun 2, 2021

translator/spelling_hints: 8

好~ 可以啦 谢谢!(突然发现自己问了个不好的问题)

@yayowd
Copy link

yayowd commented Jun 12, 2021

补充文件位置:
~/.local/share/fcitx5/rime (Linux+Fcitx5)

另外,提醒一下简体中文的朋友,如果你使用浏览器将繁体翻译成简体,会导致配置不生效,原因是配置模板翻译之后会多了一些空格,使用翻译前的模板文件即可。

@kulongwangzhi85
Copy link

不生效的朋友,可以注意下这个是yaml文件,需要注意的格式。减号前面需要缩进,而且不要使用tab按键。
我的修改如下:
patch:
'speller/algebra':
- erase/^xx$/
- abbrev/^([a-z]).+$/$1/
- abbrev/^([zcs]h).+$/$1/
- derive/^([zcs])h/$1/ # zh, ch, sh => z, c, s
- derive/^([zcs])([^h])/$1h$2/ # z, c, s => zh, ch, sh
- derive/^n/l/ # n => l
- derive/^l/n/ # l => n
- derive/([aei])n$/$1ng/ # en => eng, in => ing
- derive/([aei])ng$/$1n/ # eng => en, ing => in
- derive/([iu])an$/$1ang/ # ian => iang, uan => uang
- derive/([iu])ang$/$1an/ # iang => ian, uang => uan
- derive/^r/l/ # r => l
- derive/^l/r/ # l => r

简单的修改:- derive/([aei])n$/$1ng/ # en => eng, in => ing  方括号中的[aei]意思就是a、e、i与n的拼音组合是替换为ang。后面的$1意思就是前面需要替换的字符位置,这个不需要修改。不要看成小写的L了

@Mo892DD
Copy link

Mo892DD commented Feb 25, 2022

总算是生效了,原来是格式问题。感谢!

@F4NNIU
Copy link

F4NNIU commented Dec 20, 2022

小鹤双拼的模糊音用以下即可,不过 ang =>an、an => ang `太粗暴了,之后好好分析一下,不那么粗暴。

    - derive/^([zcs])h/$1/ # zh, ch, sh => z, c, s
    - derive/^([zcs])([^h])/$1h$2/ # z, c, s => zh, ch, sh
    - derive/([aei])ng$/$1n/ # ang =>an, eng => en, ing => in
    - derive/([aei])n$/$1ng/ # an => ang, en => eng, in => ing

@Nauxscript
Copy link

double_pinyin_flypy.default.yaml 中添加:

...
  "speller/algebra/+":
    - erase/^xx$/ # 第一行保留
    # 模糊音定義先於簡拼定義,方可令簡拼支持以上模糊音
    - derive/^([zcs])h/$1/ # zh, ch, sh => z, c, s
    - derive/^([zcs])([^h])/$1h$2/ # z, c, s => zh, ch, sh
    - derive/([aei])ng$/$1n/ # ang =>an, eng => en, ing => in
    - derive/([aei])n$/$1ng/ # an => ang, en => eng, in => ing
    - derive/^n/l/  # n => l
    - derive/^l/n/  # l => n 
...

后,双拼模糊音无法生效,且无法使用全拼打字,但是可以使用全拼(有点奇怪);

但是直接加在 double_pinyin_flypy.schema.yaml 中:

...

speller:
  alphabet: zyxwvutsrqponmlkjihgfedcba
  delimiter: " '"
  algebra:
    - erase/^xx$/
    - derive/^([jqxy])u$/$1v/
    - derive/^([aoe])([ioun])$/$1$1$2/

    # 模糊音定義先於簡拼定義,方可令簡拼支持以上模糊音
    - derive/^([zcs])h/$1/ # zh, ch, sh => z, c, s
    - derive/^([zcs])([^h])/$1h$2/ # z, c, s => zh, ch, sh
    - derive/([aei])ng$/$1n/ # ang =>an, eng => en, ing => in
    - derive/([aei])n$/$1ng/ # an => ang, en => eng, in => ing
    - derive/^n/l/  # n => l
    - derive/^l/n/  # l => n 

    - xform/^([aoe])(ng)?$/$1$1$2/
    ...

则可以生效;

不知道有没有大佬帮忙看看或者解释下是什么原因。

感谢。

@dondonhaier
Copy link

我的解决方案是新建立 用户文件夹下的luna_pinyin.custom.yaml文件,内容复制程序文件夹下的pinyin.yaml内容,全拼就可以用了

double_pinyin_flypy.default.yaml 中添加:

...
  "speller/algebra/+":
    - erase/^xx$/ # 第一行保留
    # 模糊音定義先於簡拼定義,方可令簡拼支持以上模糊音
    - derive/^([zcs])h/$1/ # zh, ch, sh => z, c, s
    - derive/^([zcs])([^h])/$1h$2/ # z, c, s => zh, ch, sh
    - derive/([aei])ng$/$1n/ # ang =>an, eng => en, ing => in
    - derive/([aei])n$/$1ng/ # an => ang, en => eng, in => ing
    - derive/^n/l/  # n => l
    - derive/^l/n/  # l => n 
...

后,双拼模糊音无法生效,且无法使用全拼打字,但是可以使用全拼(有点奇怪);

但是直接加在 double_pinyin_flypy.schema.yaml 中:

...

speller:
  alphabet: zyxwvutsrqponmlkjihgfedcba
  delimiter: " '"
  algebra:
    - erase/^xx$/
    - derive/^([jqxy])u$/$1v/
    - derive/^([aoe])([ioun])$/$1$1$2/

    # 模糊音定義先於簡拼定義,方可令簡拼支持以上模糊音
    - derive/^([zcs])h/$1/ # zh, ch, sh => z, c, s
    - derive/^([zcs])([^h])/$1h$2/ # z, c, s => zh, ch, sh
    - derive/([aei])ng$/$1n/ # ang =>an, eng => en, ing => in
    - derive/([aei])n$/$1ng/ # an => ang, en => eng, in => ing
    - derive/^n/l/  # n => l
    - derive/^l/n/  # l => n 

    - xform/^([aoe])(ng)?$/$1$1$2/
    ...

则可以生效;

不知道有没有大佬帮忙看看或者解释下是什么原因。

感谢。

我的解决方案是新建 用户文件夹下的luna_pinyin.custom.yaml文件,内容复制程序文件夹下的pinyin.yaml内容,全拼就可以用了。

双拼用你的解决方案,现在全拼和双拼都有模糊音了。

@FLK2022
Copy link

FLK2022 commented Apr 1, 2024

请问比如我想打“切换”,输入qieh时自动会被断为qi‘eh,如何让一段组合(如“eh”)直接不生效呢。
不过这可能不是能以模糊音能解决的问题。

@lotem
Copy link
Author

lotem commented Apr 1, 2024

请问比如我想打“切换”,输入qieh时自动会被断为qi‘eh,如何让一段组合(如“eh”)直接不生效呢。 不过这可能不是能以模糊音能解决的问题。

可以把拼音 eh 刪掉(用 erase 運算),他是拼音 ê 的替代拼寫形式。這個拼音的候選字只有「誒」和注音符號「ㄝ」。

也可以改寫成其他拼音,如發音相近的 ei,拼寫運算代碼爲

speller:
  algebra:
    - xform/^eh$/ei/

@FLK2022
Copy link

FLK2022 commented Apr 7, 2024

可以把拼音 eh 刪掉(用 erase 運算),他是拼音 ê 的替代拼寫形式。這個拼音的候選字只有「誒」和注音符號「ㄝ」。

也可以改寫成其他拼音,如發音相近的 ei,拼寫運算代碼爲

speller:
  algebra:
    - xform/^eh$/ei/

感谢回复,但我在输入你的代码和如下代码时均没有效果(eh仍会打出诶和ㄝ)

patch:
  'speller/algebra':
    - erase/^eh$/
    #……

不知道是否是因为输入法内置的组合无法被删除,也可能是我写错了

@XajilX
Copy link

XajilX commented Nov 20, 2024

一点改进

- derive/([ei])n$/$1ng/
- derive/([ei])ng$/$1n/
- derive/^([^aeiou]?h?)ang$/$1an/
- derive/^([^aeiou]?h?)an$/$1ang/

这样 ang 会替换为 an 但是 iang, uang 不会替换为 ian, uan,反之亦然

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment