答案1
如果你跑info zsh 'special characters'
(假设您安装了 info 格式的 zsh 文档),您将看到:
不可打印的多字节字符
此项适用于不在 ASCII 范围内的控制字符,以及如下的其他字符。如果该
MULTIBYTE
选项有效,则在COMBINING_CHARS
打开该选项时,报告为宽度为零的 ASCII 字符集中不存在的多字节字符将被视为组合字符。如果该选项关闭,或者某个字符出现在组合字符无效的位置,则该字符将被视为不可打印。不可打印的多字节字符显示为尖括号之间的十六进制数字。该数字是该字符在宽字符集中的码位;这可能是也可能不是 Unicode,具体取决于操作系统。
$ unicode $'\u94d'
U+094D DEVANAGARI SIGN VIRAMA
UTF-8: e0 a5 8d UTF-16BE: 094d Decimal: ् Octal: \04515
Category: Mn (Mark, Non-Spacing); East Asian width: N (neutral)
Unicode block: 0900..097F; Devanagari
Bidi: NSM (Non-Spacing Mark)
Combining: 9 (Viramas)
因此 U+094D 角色就属于该类别。
跑步
set -o combiningchars
如果您希望 zle 处理组合字符。
同样适用于 U+0301 组合锐音重音,Stéphane
例如 zle 在Ste<0301>phane
没有该选项的情况下呈现(我个人的偏好,因为我想知道实际上有两个字符组成它,é
而不是通常的 U+00E9 前置字符)组成é
)。