pinyinlib.el
pinyinlib.el copied to clipboard
是否可以增加对双拼的支持?
在下是小鹤双拼使用者。在使用 ace-pinyin
、find-by-pinyin-dired
等插件时,碰上 zh、ch、sh 开头的字,总是习惯性按 v
、i
、u
。倒也不是多大个问题,不过确实有点不方便。
一些其他信息:
- 据我所知,双拼输入法中声母只有 zh、ch、sh 有问题,其他都和全拼一样。
- 不同双拼方案对韵母字的处理不同。基本有三种(以下假设韵母键位 a - a、an - j、ang - h):
- 固定零声母。比如微软双拼使用 o、韵母字都以 o 开始,然后韵母照打:啊 - oa、安 - oj、昂 - oh。
- 非固定零声母。以全拼的开头作为零声母,韵母照打:啊 - aa、安 - aj、昂 - ah。
- 非固定零声母。同上,但双韵母字和全拼完全一样:啊 - aa、安 - an、昂 - ah。
两种非固定零声母方案,双拼编码的首字母和全拼一样;对固定零声母方案,我认为统一用 o 来匹配韵母字也不好,可以用韵母的键位来匹配。因此在下的想法基本上是这样:
- 提供双拼方案选择
- 对非固定零声母方案的双拼,用 zh、ch、sh 的键位匹配以它们开头的字,其余和全拼一样
- 对固定零声母方案的双拼,用 zh、ch、sh 的键位匹配以它们开头的字,用韵母的键位匹配以韵母开头的字。
更进一步地,是否可以不把汉字表硬编码在插件里,而是调用一个外部的 “首字母 - 汉字” 数据文件(允许用户指定路径)。这样无论用户使用什么输入法,只要他手里有码表,就能捣鼓出一个这样的数据文件来用。
谢谢您。
多谢建议。我没用过双拼,具体的规则不太熟悉。有一个问题,全拼里两个字如果对应到一样的首字母,是否双拼中也是一样对应到某个一样的字母?
不是的(这正是麻烦的地方)。
- 如果一个字是声母打头的
- zh、ch、sh 在双拼中会被放到韵母键上,比如小鹤双拼就放到了
v
、i
、u
上。举例来说,“中” 和 “宗” 在全拼里都是 “z” 打头,但(小鹤)双拼中一个是 “v”(zh),一个是 “z”。 - 其他的声母都和全拼一样。
- zh、ch、sh 在双拼中会被放到韵母键上,比如小鹤双拼就放到了
- 如果一个字是韵母字
- 对于非固定零声母方案的双拼(比如小鹤双拼),都和全拼一样。
- 对于固定零声母方案的双拼(比如微软双拼),打头是固定的字母(比如全是 “o”),但我觉得 “凡是韵母字都用 o 来匹配” 似乎也不太好,所以:
- 我认为可以用韵母的键位匹配韵母开头的字。比如说 “an” 在
j
键上的话,就用 “j” 而不用 “o” 来匹配 “安”。这种对用户来说应该比较好适应。 - 简单一点的话就韵母字还以全拼的首字母匹配,这样两种零声母方案也就统一了,然后只需要处理 zh、ch、sh 的问题。
- 我认为可以用韵母的键位匹配韵母开头的字。比如说 “an” 在
多谢解释!
对于非固定零声母方案的双拼(比如小鹤双拼),都和全拼一样
简单一点的话就韵母字还以全拼的首字母匹配,这样两种零声母方案也就统一了,然后只需要处理 zh、ch、sh 的问题。
我觉得这个也许是比较简单的,只要把用户输入的 v
,i
,u
转化到z
,c
,s
就行。基本上不需要什么大改。
我魔改了个五笔的版本: https://emacs-china.org/t/ace-pinyin/15926 ,用的Python脚本在贴子里给出来了
我也再找这类的方案, 不清楚pyim能否实现,卡在librime编译了😭。 如果有一个轻量级的插件能支持也挺好。