diff --git a/custom_phrase.txt b/custom_phrase.txt index b48690f..6fe455b 100644 --- a/custom_phrase.txt +++ b/custom_phrase.txt @@ -3,50 +3,29 @@ #@/db_name custom_phrase.txt #@/db_type tabledb # -# 自定义文本 -# 适用于全拼。 -# 双拼默认为 custom_phrase_double.txt 需要手动创建,并更改上面的 db_name 为 custom_phrase_double.txt +# 自定义短语 +# 可为方案增加一些要置顶的词汇及短语,编码可以随便起,不限于拼音,例如邮箱、手机号、常用短语等等。 +# +# 适用于全拼。双拼默认为 custom_phrase_double.txt 需要手动创建,并更改上面的 db_name 为 custom_phrase_double.txt # # 以下固定的词汇及顺序纯属个人偏好,仅作示例, # 可以增加自己的 .txt 文件,并在方案的 custom_phrase/user_dict 指定为自己的文件。 # -# 以 Tab 分割:汉字编码权重 +# 以 Tab 分割:词汇编码权重 # # 这个文件内的字词会占据最高权重(即排在候选项的最前面,因为指定了高权重 custom_phrase/initial_quality: 99)。 # 但不与其他翻译器互相造词,如果使用了完整编码,那么这个字或词将无法参与造词,即自造词无法被记住。 -# 所以建议只固定非完整编码的字词,「的de」应为「的d」,「是shi」应为「是s」,「仙剑xianjian」应为「仙剑xj」。 -# 也不要写 a e o,因为这三个本身就是完整编码,写了则无法参与造词。 +# 所以只建议固定非完整拼音的编码,如果需求是置顶指定拼音的候选项,请参考方案中的 pin_cand_filter。 # -# 最下面的英文是因为一些常用单词的第一候选项被纠错覆盖了, -# 比如 Amazon 被纠错为「a ma zong 阿妈粽」, -# 期望的 Amazon 跑到第二个候选项了,所以这里给它固定死喽。 +# 最下面的英文是因为一些常用单词的第一候选项被纠错覆盖了,如 Amazon 被纠错为「a ma zong 阿妈粽」,期望的 Amazon 跑到第二个候选项了,所以这里给它固定死喽。 # -# version: "2023-11-13" +# version: "2024-02-01" # # 此行之后不能写注释 - 噷 hm 哼 hng - -去 q 2 -千 q 1 - -我 w 3 -万 w 2 -往 w 1 - -儿 r - -他 t 4 -她 t 3 -它 t 2 -祂 t 1 - -与 y 2 -于 y 1 - 有 u 3 又 u 2 由 u 1 @@ -56,122 +35,6 @@ 已 i 2 亦 i 1 -片 p 2 -篇 p 1 - -是 s 4 -时 s 3 -使 s 2 -式 s 1 - -的 d 3 -地 d 2 -得 d 1 - -发 f 2 -分 f 1 - -个 g - -和 h 2 -或 h 1 - -及 j 5 -将 j 4 -即 j 3 -既 j 2 -继 j 1 - -可 k - -了 l 4 -啦 l 3 -喽 l 2 -嘞 l 1 - -在 z 3 -再 z 2 -自 z 1 - -想 x 3 -像 x 2 -向 x 1 - -才 c 2 -从 c 1 - -吧 b 3 -百 b 2 -呗 b 1 - -那 n 4 -哪 n 3 -拿 n 2 -呐 n 1 - -吗 m 3 -嘛 m 2 -呣 m 1 - - -我们 wm -我们 wom -我们 wmen -你们 nm -你们 nim -你们 nmen -人们 rm -人们 renm -人们 rmen - - -他的 td 3 -她的 td 2 -它的 td 1 -他的 tad 3 -她的 tad 2 -它的 tad 1 -他的 tde 3 -她的 tde 2 -它的 tde 1 -他们 tm 3 -她们 tm 2 -它们 tm 1 -他们 tam 3 -她们 tam 2 -它们 tam 1 -他们 tmen 3 -她们 tmen 2 -它们 tmen 1 - - -那儿 nr 2 -哪儿 nr 1 -那儿 nar 2 -哪儿 nar 1 -那个 ng 2 -哪个 ng 1 -那个 nag 2 -哪个 nag 1 -那些 nx 2 -哪些 nx 1 -那些 nax 2 -哪些 nax 1 -那里 nl 2 -哪里 nl 1 -那里 nal 2 -哪里 nal 1 -那边 nb 2 -哪边 nb 1 -那边 nab 2 -哪边 nab 1 -那位 nw 2 -哪位 nw 1 -那位 naw 2 -哪位 naw 1 - - -这 zh 一个 ig 有个 ug 是一个 sig @@ -184,35 +47,6 @@ 又又又 uuu 又双叒叕 uuuu - -等等 dd -的地得 ddd -等等等等 dddd -刚刚 gg -才刚刚 cgg -知道 zd -不知道 bzd -往往 ww -哈哈 hh -看看 kk -常常 cc -想想 xx 2 -想象 xx 1 -隐约 yy -因为 yw -什么 sm -所以 sy -为什么 wsm -是不是 sbs -没什么 msm -有时候 ysh -有时候 yshh -有时候 yshou -什么的 smd -什么是 sms -什么啊 sma - - go go Golang golang Hugo hugo diff --git a/double_pinyin.schema.yaml b/double_pinyin.schema.yaml index d6f491e..5e07384 100644 --- a/double_pinyin.schema.yaml +++ b/double_pinyin.schema.yaml @@ -87,6 +87,7 @@ engine: - lua_filter@search@radical_pinyin # 部件拆字辅码 - lua_filter@autocap_filter # 英文自动大写 - lua_filter@reduce_english_filter # 降低部分英语单词在候选项的位置 + - lua_filter@pin_cand_filter # 置顶候选项 - uniquifier # 去重 @@ -148,6 +149,42 @@ reduce_english_filter: yan, yen] +# Lua 配置: 置顶候选项 +# 符合左边的 cand.preedit 时,按顺序置顶右边的候选项。只是提升已有候选项的顺序,没有自创编码的功能。 +# (对简繁转换无效,除非简繁文字一致 😰) +# +# preedit 是经过 translator/preedit_format 处理后的编码,如果是词语则包含空格。 +# ⚠️ 注意方案的 preedit_format 设定,如果 v 显示为 ü,那么左边也要写 ü +# ⚠️ 双拼 ⚠️ 显示为全拼拼写就要写全拼,如 'shuang pin',显示为双拼拼写就要写双拼,如 'ul pb' 😰 +# +# 脚本自动额外生成 preedit 中最后一个空格后面的首字母和 zh ch sh, +# 如 'ni hao' 会自动生成 'ni hao'、'ni h' +# 如 'bu hao chi' 会自动生成 'bu hao chi'、'bu hao c'、'bu hao ch' +# 如果同时写了 da zhuan 和 da zhong,输入 da z 时,排在前面的的优先,除非明确指定 'da z'。 +pin_cand_filter: + # 格式:编码字词1字词2…… + # 示例: + # - 'le 了' # 输入 le 时,置顶「了」 + # - 'la 啦' # 输入 la 时,置顶「啦」 + # - 'ta 他 她 它' # 可以置顶多个字,按顺序排列 + # - 'ta 啊' # ❌ 编码不会产生的字词,不会生效且影响查找效率。自创编码的字词句可以写到 custom_phrase 中。 + # - 'l 了 啦' # 支持单编码或输入到一半的编码,输入 l 时,置顶「了、啦」 + # - 's m 什么' # 支持简拼,要和输入框的行为一致,有空格加空格 + # - 'w s m 为什么' # 支持简拼,要和输入框的行为一致,有空格加空格 + # - 'ni hao 你好 👋 拟好' # 如果 emoji 被分割开了,可以任意调整 emoji 的位置 + # # 以下两行,会额外生成 'da z' 'da zh' 的置顶,前两个候选项是「大专、大众」,先写的排在前面 + # - da zhuang 大专 + # - da zhong 大众 + # # 如果明确定义了简码形式,则完全使用简码形式 + # - da z 打字 + # - da zh 打仗 + # # ⚠️ 双拼 + # - 'chong zhuang 重装' # 保留现有的 preedit_format 时可用全拼 + # - 'is vl 重装' # 清空 preedit_format 时要用双拼拼写(示例为小鹤的) + # 如果有任意一个方案的 pin_cand_filter 为空则可能会在方案间串台,don't know why ... + - d 的 + + # 主翻译器,拼音 translator: dictionary: rime_ice # 挂载词库 rime_ice.dict.yaml diff --git a/double_pinyin_abc.schema.yaml b/double_pinyin_abc.schema.yaml index 93caa85..f3224fe 100644 --- a/double_pinyin_abc.schema.yaml +++ b/double_pinyin_abc.schema.yaml @@ -87,6 +87,7 @@ engine: - lua_filter@search@radical_pinyin # 部件拆字辅码 - lua_filter@autocap_filter # 英文自动大写 - lua_filter@reduce_english_filter # 降低部分英语单词在候选项的位置 + - lua_filter@pin_cand_filter # 置顶候选项 - uniquifier # 去重 @@ -148,6 +149,42 @@ reduce_english_filter: yan, yen] +# Lua 配置: 置顶候选项 +# 符合左边的 cand.preedit 时,按顺序置顶右边的候选项。只是提升已有候选项的顺序,没有自创编码的功能。 +# (对简繁转换无效,除非简繁文字一致 😰) +# +# preedit 是经过 translator/preedit_format 处理后的编码,如果是词语则包含空格。 +# ⚠️ 注意方案的 preedit_format 设定,如果 v 显示为 ü,那么左边也要写 ü +# ⚠️ 双拼 ⚠️ 显示为全拼拼写就要写全拼,如 'shuang pin',显示为双拼拼写就要写双拼,如 'ul pb' 😰 +# +# 脚本自动额外生成 preedit 中最后一个空格后面的首字母和 zh ch sh, +# 如 'ni hao' 会自动生成 'ni hao'、'ni h' +# 如 'bu hao chi' 会自动生成 'bu hao chi'、'bu hao c'、'bu hao ch' +# 如果同时写了 da zhuan 和 da zhong,输入 da z 时,排在前面的的优先,除非明确指定 'da z'。 +pin_cand_filter: + # 格式:编码字词1字词2…… + # 示例: + # - 'le 了' # 输入 le 时,置顶「了」 + # - 'la 啦' # 输入 la 时,置顶「啦」 + # - 'ta 他 她 它' # 可以置顶多个字,按顺序排列 + # - 'ta 啊' # ❌ 编码不会产生的字词,不会生效且影响查找效率。自创编码的字词句可以写到 custom_phrase 中。 + # - 'l 了 啦' # 支持单编码或输入到一半的编码,输入 l 时,置顶「了、啦」 + # - 's m 什么' # 支持简拼,要和输入框的行为一致,有空格加空格 + # - 'w s m 为什么' # 支持简拼,要和输入框的行为一致,有空格加空格 + # - 'ni hao 你好 👋 拟好' # 如果 emoji 被分割开了,可以任意调整 emoji 的位置 + # # 以下两行,会额外生成 'da z' 'da zh' 的置顶,前两个候选项是「大专、大众」,先写的排在前面 + # - da zhuang 大专 + # - da zhong 大众 + # # 如果明确定义了简码形式,则完全使用简码形式 + # - da z 打字 + # - da zh 打仗 + # # ⚠️ 双拼 + # - 'chong zhuang 重装' # 保留现有的 preedit_format 时可用全拼 + # - 'is vl 重装' # 清空 preedit_format 时要用双拼拼写(示例为小鹤的) + # 如果有任意一个方案的 pin_cand_filter 为空则可能会在方案间串台,don't know why ... + - d 的 + + # 主翻译器,拼音 translator: dictionary: rime_ice # 挂载词库 rime_ice.dict.yaml diff --git a/double_pinyin_flypy.schema.yaml b/double_pinyin_flypy.schema.yaml index c0d4fca..46bab1f 100644 --- a/double_pinyin_flypy.schema.yaml +++ b/double_pinyin_flypy.schema.yaml @@ -87,6 +87,7 @@ engine: - lua_filter@search@radical_pinyin # 部件拆字辅码 - lua_filter@autocap_filter # 英文自动大写 - lua_filter@reduce_english_filter # 降低部分英语单词在候选项的位置 + - lua_filter@pin_cand_filter # 置顶候选项 - uniquifier # 去重 @@ -148,6 +149,42 @@ reduce_english_filter: yan, yen] +# Lua 配置: 置顶候选项 +# 符合左边的 cand.preedit 时,按顺序置顶右边的候选项。只是提升已有候选项的顺序,没有自创编码的功能。 +# (对简繁转换无效,除非简繁文字一致 😰) +# +# preedit 是经过 translator/preedit_format 处理后的编码,如果是词语则包含空格。 +# ⚠️ 注意方案的 preedit_format 设定,如果 v 显示为 ü,那么左边也要写 ü +# ⚠️ 双拼 ⚠️ 显示为全拼拼写就要写全拼,如 'shuang pin',显示为双拼拼写就要写双拼,如 'ul pb' 😰 +# +# 脚本自动额外生成 preedit 中最后一个空格后面的首字母和 zh ch sh, +# 如 'ni hao' 会自动生成 'ni hao'、'ni h' +# 如 'bu hao chi' 会自动生成 'bu hao chi'、'bu hao c'、'bu hao ch' +# 如果同时写了 da zhuan 和 da zhong,输入 da z 时,排在前面的的优先,除非明确指定 'da z'。 +pin_cand_filter: + # 格式:编码字词1字词2…… + # 示例: + # - 'le 了' # 输入 le 时,置顶「了」 + # - 'la 啦' # 输入 la 时,置顶「啦」 + # - 'ta 他 她 它' # 可以置顶多个字,按顺序排列 + # - 'ta 啊' # ❌ 编码不会产生的字词,不会生效且影响查找效率。自创编码的字词句可以写到 custom_phrase 中。 + # - 'l 了 啦' # 支持单编码或输入到一半的编码,输入 l 时,置顶「了、啦」 + # - 's m 什么' # 支持简拼,要和输入框的行为一致,有空格加空格 + # - 'w s m 为什么' # 支持简拼,要和输入框的行为一致,有空格加空格 + # - 'ni hao 你好 👋 拟好' # 如果 emoji 被分割开了,可以任意调整 emoji 的位置 + # # 以下两行,会额外生成 'da z' 'da zh' 的置顶,前两个候选项是「大专、大众」,先写的排在前面 + # - da zhuang 大专 + # - da zhong 大众 + # # 如果明确定义了简码形式,则完全使用简码形式 + # - da z 打字 + # - da zh 打仗 + # # ⚠️ 双拼 + # - 'chong zhuang 重装' # 保留现有的 preedit_format 时可用全拼 + # - 'is vl 重装' # 清空 preedit_format 时要用双拼拼写(示例为小鹤的) + # 如果有任意一个方案的 pin_cand_filter 为空则可能会在方案间串台,don't know why ... + - d 的 + + # 主翻译器,拼音 translator: dictionary: rime_ice # 挂载词库 rime_ice.dict.yaml diff --git a/double_pinyin_mspy.schema.yaml b/double_pinyin_mspy.schema.yaml index 40bbe84..c9da5ae 100644 --- a/double_pinyin_mspy.schema.yaml +++ b/double_pinyin_mspy.schema.yaml @@ -87,6 +87,7 @@ engine: - lua_filter@search@radical_pinyin # 部件拆字辅码 - lua_filter@autocap_filter # 英文自动大写 - lua_filter@reduce_english_filter # 降低部分英语单词在候选项的位置 + - lua_filter@pin_cand_filter # 置顶候选项 - uniquifier # 去重 @@ -148,6 +149,42 @@ reduce_english_filter: yan, yen] +# Lua 配置: 置顶候选项 +# 符合左边的 cand.preedit 时,按顺序置顶右边的候选项。只是提升已有候选项的顺序,没有自创编码的功能。 +# (对简繁转换无效,除非简繁文字一致 😰) +# +# preedit 是经过 translator/preedit_format 处理后的编码,如果是词语则包含空格。 +# ⚠️ 注意方案的 preedit_format 设定,如果 v 显示为 ü,那么左边也要写 ü +# ⚠️ 双拼 ⚠️ 显示为全拼拼写就要写全拼,如 'shuang pin',显示为双拼拼写就要写双拼,如 'ul pb' 😰 +# +# 脚本自动额外生成 preedit 中最后一个空格后面的首字母和 zh ch sh, +# 如 'ni hao' 会自动生成 'ni hao'、'ni h' +# 如 'bu hao chi' 会自动生成 'bu hao chi'、'bu hao c'、'bu hao ch' +# 如果同时写了 da zhuan 和 da zhong,输入 da z 时,排在前面的的优先,除非明确指定 'da z'。 +pin_cand_filter: + # 格式:编码字词1字词2…… + # 示例: + # - 'le 了' # 输入 le 时,置顶「了」 + # - 'la 啦' # 输入 la 时,置顶「啦」 + # - 'ta 他 她 它' # 可以置顶多个字,按顺序排列 + # - 'ta 啊' # ❌ 编码不会产生的字词,不会生效且影响查找效率。自创编码的字词句可以写到 custom_phrase 中。 + # - 'l 了 啦' # 支持单编码或输入到一半的编码,输入 l 时,置顶「了、啦」 + # - 's m 什么' # 支持简拼,要和输入框的行为一致,有空格加空格 + # - 'w s m 为什么' # 支持简拼,要和输入框的行为一致,有空格加空格 + # - 'ni hao 你好 👋 拟好' # 如果 emoji 被分割开了,可以任意调整 emoji 的位置 + # # 以下两行,会额外生成 'da z' 'da zh' 的置顶,前两个候选项是「大专、大众」,先写的排在前面 + # - da zhuang 大专 + # - da zhong 大众 + # # 如果明确定义了简码形式,则完全使用简码形式 + # - da z 打字 + # - da zh 打仗 + # # ⚠️ 双拼 + # - 'chong zhuang 重装' # 保留现有的 preedit_format 时可用全拼 + # - 'is vl 重装' # 清空 preedit_format 时要用双拼拼写(示例为小鹤的) + # 如果有任意一个方案的 pin_cand_filter 为空则可能会在方案间串台,don't know why ... + - d 的 + + # 主翻译器,拼音 translator: dictionary: rime_ice # 挂载词库 rime_ice.dict.yaml diff --git a/double_pinyin_sogou.schema.yaml b/double_pinyin_sogou.schema.yaml index 3a96165..bfaa913 100644 --- a/double_pinyin_sogou.schema.yaml +++ b/double_pinyin_sogou.schema.yaml @@ -87,6 +87,7 @@ engine: - lua_filter@search@radical_pinyin # 部件拆字辅码 - lua_filter@autocap_filter # 英文自动大写 - lua_filter@reduce_english_filter # 降低部分英语单词在候选项的位置 + - lua_filter@pin_cand_filter # 置顶候选项 - uniquifier # 去重 @@ -148,6 +149,42 @@ reduce_english_filter: yan, yen] +# Lua 配置: 置顶候选项 +# 符合左边的 cand.preedit 时,按顺序置顶右边的候选项。只是提升已有候选项的顺序,没有自创编码的功能。 +# (对简繁转换无效,除非简繁文字一致 😰) +# +# preedit 是经过 translator/preedit_format 处理后的编码,如果是词语则包含空格。 +# ⚠️ 注意方案的 preedit_format 设定,如果 v 显示为 ü,那么左边也要写 ü +# ⚠️ 双拼 ⚠️ 显示为全拼拼写就要写全拼,如 'shuang pin',显示为双拼拼写就要写双拼,如 'ul pb' 😰 +# +# 脚本自动额外生成 preedit 中最后一个空格后面的首字母和 zh ch sh, +# 如 'ni hao' 会自动生成 'ni hao'、'ni h' +# 如 'bu hao chi' 会自动生成 'bu hao chi'、'bu hao c'、'bu hao ch' +# 如果同时写了 da zhuan 和 da zhong,输入 da z 时,排在前面的的优先,除非明确指定 'da z'。 +pin_cand_filter: + # 格式:编码字词1字词2…… + # 示例: + # - 'le 了' # 输入 le 时,置顶「了」 + # - 'la 啦' # 输入 la 时,置顶「啦」 + # - 'ta 他 她 它' # 可以置顶多个字,按顺序排列 + # - 'ta 啊' # ❌ 编码不会产生的字词,不会生效且影响查找效率。自创编码的字词句可以写到 custom_phrase 中。 + # - 'l 了 啦' # 支持单编码或输入到一半的编码,输入 l 时,置顶「了、啦」 + # - 's m 什么' # 支持简拼,要和输入框的行为一致,有空格加空格 + # - 'w s m 为什么' # 支持简拼,要和输入框的行为一致,有空格加空格 + # - 'ni hao 你好 👋 拟好' # 如果 emoji 被分割开了,可以任意调整 emoji 的位置 + # # 以下两行,会额外生成 'da z' 'da zh' 的置顶,前两个候选项是「大专、大众」,先写的排在前面 + # - da zhuang 大专 + # - da zhong 大众 + # # 如果明确定义了简码形式,则完全使用简码形式 + # - da z 打字 + # - da zh 打仗 + # # ⚠️ 双拼 + # - 'chong zhuang 重装' # 保留现有的 preedit_format 时可用全拼 + # - 'is vl 重装' # 清空 preedit_format 时要用双拼拼写(示例为小鹤的) + # 如果有任意一个方案的 pin_cand_filter 为空则可能会在方案间串台,don't know why ... + - d 的 + + # 主翻译器,拼音 translator: dictionary: rime_ice # 挂载词库 rime_ice.dict.yaml diff --git a/double_pinyin_ziguang.schema.yaml b/double_pinyin_ziguang.schema.yaml index db6f83c..cba9182 100644 --- a/double_pinyin_ziguang.schema.yaml +++ b/double_pinyin_ziguang.schema.yaml @@ -87,6 +87,7 @@ engine: - lua_filter@search@radical_pinyin # 部件拆字辅码 - lua_filter@autocap_filter # 英文自动大写 - lua_filter@reduce_english_filter # 降低部分英语单词在候选项的位置 + - lua_filter@pin_cand_filter # 置顶候选项 - uniquifier # 去重 @@ -148,6 +149,42 @@ reduce_english_filter: yan, yen] +# Lua 配置: 置顶候选项 +# 符合左边的 cand.preedit 时,按顺序置顶右边的候选项。只是提升已有候选项的顺序,没有自创编码的功能。 +# (对简繁转换无效,除非简繁文字一致 😰) +# +# preedit 是经过 translator/preedit_format 处理后的编码,如果是词语则包含空格。 +# ⚠️ 注意方案的 preedit_format 设定,如果 v 显示为 ü,那么左边也要写 ü +# ⚠️ 双拼 ⚠️ 显示为全拼拼写就要写全拼,如 'shuang pin',显示为双拼拼写就要写双拼,如 'ul pb' 😰 +# +# 脚本自动额外生成 preedit 中最后一个空格后面的首字母和 zh ch sh, +# 如 'ni hao' 会自动生成 'ni hao'、'ni h' +# 如 'bu hao chi' 会自动生成 'bu hao chi'、'bu hao c'、'bu hao ch' +# 如果同时写了 da zhuan 和 da zhong,输入 da z 时,排在前面的的优先,除非明确指定 'da z'。 +pin_cand_filter: + # 格式:编码字词1字词2…… + # 示例: + # - 'le 了' # 输入 le 时,置顶「了」 + # - 'la 啦' # 输入 la 时,置顶「啦」 + # - 'ta 他 她 它' # 可以置顶多个字,按顺序排列 + # - 'ta 啊' # ❌ 编码不会产生的字词,不会生效且影响查找效率。自创编码的字词句可以写到 custom_phrase 中。 + # - 'l 了 啦' # 支持单编码或输入到一半的编码,输入 l 时,置顶「了、啦」 + # - 's m 什么' # 支持简拼,要和输入框的行为一致,有空格加空格 + # - 'w s m 为什么' # 支持简拼,要和输入框的行为一致,有空格加空格 + # - 'ni hao 你好 👋 拟好' # 如果 emoji 被分割开了,可以任意调整 emoji 的位置 + # # 以下两行,会额外生成 'da z' 'da zh' 的置顶,前两个候选项是「大专、大众」,先写的排在前面 + # - da zhuang 大专 + # - da zhong 大众 + # # 如果明确定义了简码形式,则完全使用简码形式 + # - da z 打字 + # - da zh 打仗 + # # ⚠️ 双拼 + # - 'chong zhuang 重装' # 保留现有的 preedit_format 时可用全拼 + # - 'is vl 重装' # 清空 preedit_format 时要用双拼拼写(示例为小鹤的) + # 如果有任意一个方案的 pin_cand_filter 为空则可能会在方案间串台,don't know why ... + - d 的 + + # 主翻译器,拼音 translator: dictionary: rime_ice # 挂载词库 rime_ice.dict.yaml diff --git a/lua/pin_cand_filter.lua b/lua/pin_cand_filter.lua index 44485f0..a6b479c 100644 --- a/lua/pin_cand_filter.lua +++ b/lua/pin_cand_filter.lua @@ -1,4 +1,5 @@ -- 置顶候选项 +-- Powered By ChatGPT local function isInList(list, str) for i, v in ipairs(list) do @@ -12,39 +13,105 @@ end local M = {} function M.init(env) - local config = env.engine.schema.config env.name_space = env.name_space:gsub("^*", "") + local list = env.engine.schema.config:get_list(env.name_space) + + -- 如果定义了 'da zhuan' 或 'da zhong' ,会自动生成 'da z' 和 'da zh'。 + -- 然而,如果明确定义了 'da z' 或 'da zh',则会优先使用这些明确自定义的简码,用 set 来做判断。 + local set = {} + for i = 0, list.size - 1 do + local preedit, texts = list:get_value_at(i).value:match("([^\t]+)\t(.+)") + if preedit and texts then + set[preedit] = true + end + end + -- 遍历要置顶的候选项列表,将其转换为 table 存储到 M.pin_cands - -- 'ta 他 她 它' → M.pin_cands["ta"] = {"他", "她", "它"}, + -- 'l 了 啦' → M.pin_cands["l"] = {"了", "啦"} + -- 'ta 他 她 它' → M.pin_cands["ta"] = {"他", "她", "它"} + -- + -- 对于词汇(preedit 包含空格),同时生成简码的拼写(最后一个空格后的首字母),如: -- 'ni hao 你好 拟好' → M.pin_cands["ni hao"] = {"你好", "拟好"} - local list = config:get_list(env.name_space) + -- → M.pin_cands["ni h"] = {"你好", "拟好"} + -- + -- 如果最后一个空格后以 zh ch sh 开头,额外再生成 zh, ch, sh 的拼写,如: + -- 'zhi chi 支持' → M.pin_cands["zhi chi"] = {"支持"} + -- → M.pin_cands["zhi c"] = {"支持"} + -- → M.pin_cands["zhi ch"] = {"支持"} + -- + -- 如果同时定义了 'da zhuan 大专' 'da zhong 大众',会生成: + -- M.pin_cands["da zhuan"] = {"大专"} + -- M.pin_cands["da zhong"] = {"大众"} + -- M.pin_cands["da z"] = {"大专", "大众"} -- 先写的排在前面 + -- M.pin_cands["da zh"] = {"大专", "大众"} -- 先写的排在前面 + -- + -- 如果同时定义了 'da zhuan 大专' 'da zhong 大众' 且明确定义了简码形式 'da z 打字',会生成: + -- M.pin_cands["da zhuan"] = {"大专"} + -- M.pin_cands["da zhong"] = {"大众"} + -- M.pin_cands["da z"] = {"打字"} -- 明确定义的优先级更高 + -- M.pin_cands["da zh"] = {"大专", "大众"} -- 没明确定义的,仍然按上面的方式生成 + M.pin_cands = {} for i = 0, list.size - 1 do - local code, texts = list:get_value_at(i).value:match("([^\t]+)\t(.+)") - if code and texts then - M.pin_cands[code] = {} + local preedit, texts = list:get_value_at(i).value:match("([^\t]+)\t(.+)") + if preedit and texts then + M.pin_cands[preedit] = {} + -- 按照配置生成完整的拼写 for text in texts:gmatch("%S+") do - table.insert(M.pin_cands[code], text) + table.insert(M.pin_cands[preedit], text) + end + -- 额外处理包含空格的 preedit,增加最后一个拼音的首字母和 zh, ch, sh 的简码 + if preedit:find(" ") then + local preceding_part, last_part = preedit:match("^(.+)%s(%S+)$") + if last_part then + -- 生成最后一个拼音的简码拼写(最后一个空格后的首字母),如 ni hao 生成 ni h + local p1 = preceding_part .. " " .. last_part:sub(1, 1) + -- 只在没有明确定义此简码时才生成,已有的追加,没有的直接赋值 + if not set[p1] then + if M.pin_cands[p1] ~= nil then + for text in texts:gmatch("%S+") do + table.insert(M.pin_cands[p1], text) + end + else + M.pin_cands[p1] = M.pin_cands[preedit] + end + end + -- 生成最后一个拼音的 zh, ch, sh 的简码拼写(最后一个空格后以 zh ch sh 开头),如 zhi chi 生成 zhi ch + -- if last_part:match("^(zh|ch|sh)") then -- 😰 ChatGPT 诚欺我 + if last_part:match("^zh") or last_part:match("^ch") or last_part:match("^sh") then + local p2 = preceding_part .. " " .. last_part:sub(1, 2) + -- 只在没有明确定义此简码时才生成,已有的追加,没有的直接赋值 + if not set[p2] then + if M.pin_cands[p2] ~= nil then + for text in texts:gmatch("%S+") do + table.insert(M.pin_cands[p2], text) + end + else + M.pin_cands[p2] = M.pin_cands[preedit] + end + end + end + end end end end end function M.func(input) - local pined = {} - local others = {} + local pined = {} -- 提升的候选项 + local others = {} -- 其余候选项 local pined_count = 0 for cand in input:iter() do - local pins = M.pin_cands[cand.preedit] - if pins then - -- 给 pined 几个空字符串占位元素,后面直接 pined[idx] = cand 确保 pined 与 pins 顺序一致 - if #pined < #pins then - for _ = 1, #pins do + local texts = M.pin_cands[cand.preedit] + if texts then + -- 给 pined 几个空字符串占位元素,后面直接 pined[idx] = cand 确保 pined 与 texts 顺序一致 + if #pined < #texts then + for _ = 1, #texts do table.insert(pined, '') end end -- 要置顶的放到 pined 中,其余的放到 others - local ok, idx = isInList(pins, cand.text) + local ok, idx = isInList(texts, cand.text) if ok then pined[idx] = cand pined_count = pined_count + 1 @@ -52,7 +119,7 @@ function M.func(input) table.insert(others, cand) end -- 找齐了或者 others 太大了,就不找了,一般前 5 个就找完了 - if pined_count == #pins or #others > 50 then + if pined_count == #texts or #others > 50 then break end else diff --git a/others/CHANGELOG.md b/others/CHANGELOG.md index 64aae79..0dab7d9 100644 --- a/others/CHANGELOG.md +++ b/others/CHANGELOG.md @@ -4,6 +4,10 @@ +## 2024-02-01 🆕 + +🆕 `pin_cand_filter.lua` 置顶候选项 [#586](https://github.com/iDvel/rime-ice/issues/586) + ## 2024-01-29 🆕 ⚠️ 🆕 [部件拆字方案](https://github.com/mirtlecn/rime-radical-pinyin) 反查、辅码 ([#643](https://github.com/iDvel/rime-ice/pull/643)) diff --git a/rime.lua b/rime.lua index a029d77..82945e2 100644 --- a/rime.lua +++ b/rime.lua @@ -41,19 +41,11 @@ reduce_english_filter = require("reduce_english_filter") -- 辅码,https://github.com/mirtlecn/rime-radical-pinyin/blob/master/search.lua.md search = require("search") --- 默认未启用: - --- 词条置顶 --- 满足左边的 cand.preedit 时,将右边的 cand 按顺序置顶。 --- 在 engine/filters 增加 - lua_filter@pin_cand_filter --- 在方案里写配置项: --- pin_cand_filter: --- - "l 了" --- - "le 了" --- - "ta 他 她 它" --- - "ni hao 你好 拟好" +-- 置顶候选项 pin_cand_filter = require("pin_cand_filter") +-- 默认未启用: + -- 长词优先(全拼) -- 在 engine/filters 增加 - lua_filter@long_word_filter -- 在方案里写配置项: diff --git a/rime_ice.schema.yaml b/rime_ice.schema.yaml index fe3a89f..86f0015 100644 --- a/rime_ice.schema.yaml +++ b/rime_ice.schema.yaml @@ -6,7 +6,7 @@ schema: schema_id: rime_ice name: 雾凇拼音 - version: "2024-01-30" + version: "2024-02-01" author: - Dvel description: | @@ -76,6 +76,7 @@ engine: - lua_filter@v_filter # v 模式 symbols 优先(否则是英文优先) - lua_filter@autocap_filter # 英文自动大写 - lua_filter@reduce_english_filter # 降低部分英语单词在候选项的位置 + - lua_filter@pin_cand_filter # 置顶候选项 - uniquifier # 去重 @@ -137,6 +138,131 @@ reduce_english_filter: yan, yen] +# Lua 配置: 置顶候选项 +# 符合左边的 cand.preedit 时,按顺序置顶右边的候选项。只是提升已有候选项的顺序,没有自创编码的功能。 +# (对简繁转换无效,除非简繁文字一致 😰) +# +# preedit 是经过 translator/preedit_format 处理后的编码,如果是词语则包含空格。 +# ⚠️ 注意方案的 preedit_format 设定,如果 v 显示为 ü,那么左边也要写 ü +# ⚠️ 双拼 ⚠️ 显示为全拼拼写就要写全拼,如 'shuang pin',显示为双拼拼写就要写双拼,如 'ul pb' 😰 +# +# 脚本自动额外生成 preedit 中最后一个空格后面的首字母和 zh ch sh, +# 如 'ni hao' 会自动生成 'ni hao'、'ni h' +# 如 'bu hao chi' 会自动生成 'bu hao chi'、'bu hao c'、'bu hao ch' +# 如果同时写了 da zhuan 和 da zhong,输入 da z 时,排在前面的的优先,除非明确指定 'da z'。 +pin_cand_filter: + # 格式:编码字词1字词2…… + # 示例: + # - 'le 了' # 输入 le 时,置顶「了」 + # - 'la 啦' # 输入 la 时,置顶「啦」 + # - 'ta 他 她 它' # 可以置顶多个字,按顺序排列 + # - 'ta 啊' # ❌ 编码不会产生的字词,不会生效且影响查找效率。自创编码的字词句可以写到 custom_phrase 中。 + # - 'l 了 啦' # 支持单编码或输入到一半的编码,输入 l 时,置顶「了、啦」 + # - 's m 什么' # 支持简拼,要和输入框的行为一致,有空格加空格 + # - 'w s m 为什么' # 支持简拼,要和输入框的行为一致,有空格加空格 + # - 'ni hao 你好 👋 拟好' # 如果 emoji 被分割开了,可以任意调整 emoji 的位置 + # # 以下两行,会额外生成 'da z' 'da zh' 的置顶,前两个候选项是「大专、大众」,先写的排在前面 + # - da zhuang 大专 + # - da zhong 大众 + # # 如果明确定义了简码形式,则完全使用简码形式 + # - da z 打字 + # - da zh 打仗 + # + # ⚙️ 以下是个人习惯,仅供参考,可以打个补丁来覆盖。 + # 单编码 + - q 去 千 + - w 我 万 往 + - e 呃 + - r 让 人 + - t 他 她 它 祂 + - y 与 于 + # - u 在 custom_phrase 置顶 + # - i 在 custom_phrase 置顶 + - o 哦 + - p 片 篇 + - a 啊 + - s 是 时 使 式 + - d 的 地 得 + - f 发 放 分 + - g 个 各 + - h 和 或 + - j 及 将 即 既 继 + - k 可 + - l 了 啦 喽 嘞 + - z 在 再 自 + - x 想 像 向 + - c 才 从 + # - v + - b 吧 把 呗 百 + - n 那 哪 拿 呐 + - m 吗 嘛 呣 + # 单字 + - de 的 地 得 + - na 那 哪 拿 + - ta 他 她 它 祂 + - er 而 儿 二 + - ma 吗 嘛 妈 + - zhe 这 着 + - hai 还 + - you 有 🈶 又 由 + - mei 没 + - bing 并 + - tong 同 + - yu 与 于 + - he 和 + - ji 及 即 既 + - shi 是 时 + - la 啦 拉 + - xing 行 + - dian 点 + - yao 要 + - kan 看 + - bei 被 + - zuo 做 + - dao 到 倒 + - xiang 想 像 向 + - zhi 只 + - cai 才 + - gang 刚 + - jiu 就 + # ta、na + - ta de 他的 她的 它的 + - 'tad 他的 她的 它的' # 英文单词 tad 造成 preedit 为 tad,从而让 ta d 的置顶未生效,需要明确再写上 tad + - ta men 他们 她们 它们 + - ta men de 他们的 她们的 它们的 + - na er 那儿 哪儿 + - na ge 那个 哪个 + - na xie 那些 哪些 + - na li 那里 哪里 + - na bian 那边 哪边 + - na bian er 那边儿 哪边儿 + - na wei 那位 哪位 + # 简码 + - zh 这 + - d d 等等 + - 'dd 等等' # 覆盖英文单词 D&D + - d d d d 等等等等 + - g g 刚刚 + - c g g 才刚刚 + - z d 知道 + - b z d 不知道 + - w w 往往 + - h h 哈哈 + - k k 看看 + - c c 常常 + - x x 想想 🤔 想象 + - y w 因为 + - s m 什么 + - w s m 为什么 + - s b s 是不是 + - m s m 没什么 + - s m d 什么的 + - s m s 什么是 + - 'sms 什么是' # 覆盖英文单词 SMS + - s m a 什么啊 + - 'sma 什么啊' # 覆盖英文单词 S码 + + # 主翻译器,拼音 translator: dictionary: rime_ice # 挂载词库 rime_ice.dict.yaml