最近借助AI在折腾fcitx5-rime的配置,迁移到了雾凇拼音rime-ice,总体非常智能,体验很好,但是关于全半角问题似乎在所有rime配置的默认配置中,都有一些让我不太好理解、用起来不顺手的地方。
默认的全半角设定:
- 全角模式下,所有英语字母及标点都是全角
- 半角模式下,所有英语字母及标点都是半角
这带来的问题是,在输入中文西文混排的内容时,西文字母会变成全角,如:
deepseek大语言模型
以及在输入英语+标点时,会出现西文字母+中文标点的情况。
我的想法则是:
- 中文输入模式下,所有标点符号都是全角(部分特殊符号如@、#、/、*等除外)
- 西文输入模式下,所有标点符号都是半角
然而在rime的框架下,输入模式 和 全角/半角字符 以及 全角/半角标点 似乎是各自独立的?
对此,我的解决方案是,始终使用半角模式,这样可以确保在西文输入状态下,总是能够输出正确的字母与符号;在中文输入模式中,则通过配置文件进行映射,把需要的西文半角标点映射为我需要的全角标点符号。
不知道论坛内大佬们还有没有什么更好的解决方案分享一下?
另附,我自己的double_pinyin_flypy.custom.yaml
patch:
translator/preedit_format: []
switches:
- name: ascii_mode
states: [ 中, A ]
- name: ascii_punct
states: [ 半角标点, 全角标点 ]
reset: 0
- name: traditionalization
states: [ 简, 繁 ]
- name: emoji
states: [ 💀, 😄 ]
reset: 1
- name: full_shape
states: [ 半角, 全角 ]
reset: 1
- name: search_single_char
states: [ 正常, 单字 ]
abbrev: [ 词, 单 ]
punctuator:
full_shape:
' ' : { commit: ' ' }
',' : { commit: , }
'.' : { commit: 。 }
'<' : [ 《, 〈, «, ‹ ]
'>' : [ 》, 〉, », › ]
'/' : [ /, ÷ ]
'?' : { commit: ? }
';' : { commit: ; }
':' : { commit: : }
'''' : { pair: [ '‘', '’' ] }
'"' : { pair: [ '“', '”' ] }
'\' : [ 、, \ ]
'|' : [ ·, |, '§', '¦' ]
'`' : `
'~' : ~
'!' : { commit: ! }
'@' : [ @, ☯ ]
'#' : [ #, ⌘ ]
'%' : [ %, '°', '℃' ]
'$' : [ ¥, '$', '€', '£', '¥', '¢', '¤', ₩ ]
'^' : { commit: …… }
'&' : &
'*' : [ *, ·, ・, ×, ※, ❂ ]
'(' : (
')' : )
'-' : -
'_' : ——
'+' : +
'=' : [ =, 々, 〃 ]
'[' : [ 「, 【, 〔, [ ]
']' : [ 」, 】, 〕, ] ]
'{' : [ 『, 〖, { ]
'}' : [ 』, 〗, } ]
half_shape:
',' : { commit: , }
'.' : { commit: 。 }
# '<' : [ 《, 〈, «, ‹ ]
# '>' : [ 》, 〉, », › ]
'<' : { commit: 《 }
'>' : { commit: 》 }
# '/' : [ 、, 、, '/', /, ÷ ]
'/' : { commit: '/' }
'?' : { commit: ? }
';' : { commit: ; }
':' : { commit: : }
"'" : { pair: [ '「', '」' ] }
'"' : { pair: [ '『', '』' ] }
# '\' : [ 、, '\', \ ]
'\' : { commit: 、 }
# '|' : [ ·, ・, '|', |, '§', '¦', '‖' ]
'|' : { commit: '|' }
# '`' : [ '`', ‵, ‶, ‷, ′, ″, ‴, ⁗ ]
'`' : { commit: '`' }
# '~' : [ '~', ~, ˜, ≈, ≋, ≃, ≅, ≇, ∽, ⋍, ≌, ﹏, ﹋, ﹌ ]
'~' : { commit: '~' }
'!' : { commit: ! }
# '@' : [ '@', ©, ®, ℗ ]
'@' : { commit: '@' }
# '#' : [ '#', № ]
'#' : { commit: '#' }
# '%' : [ '%', %, '°', '℃', ‰, ‱, ℉ ]
'%' : { commit: '%' }
# '$' : [ ¥, '$', '€', '£', '¥', '¢', '¤', ₩ ]
'$' : { commit: ¥ }
'^' : { commit: …… }
'&' : '&'
# '*' : [ '*', *, ·, ・, ×, ※, ❂, ⁂, ☮, ☯, ☣ ]
'*' : { commit: '*' }
'(' : (
')' : )
'-' : '-'
'_' : ——
'+' : '+'
# '=' : [ '=', 々, 〃 ]
'=' : '='
# '[' : [ 「, 【, 〔, [ ]
# ']' : [ 」, 】, 〕, ] ]
# '{' : [ 『, 〖, { ]
# '}' : [ 』, 〗, } ]
'[' : { commit: 〔 }
']' : { commit: 〕 }
'{' : { commit: { }
'}' : { commit: } }