这是终结者中一个奇怪且非常具体的问题。当我在终端窗口中输入字符“§”然后按退格键两次时,它允许我始终删除两个字符,甚至如果它们是 PS1 字符串的一部分。
重现步骤:
- 在终端中输入“§”。
- 删除2个字符。
- 重复。
答案1
听起来您的终端和应用程序区域设置之间的 UTF-8 设置不匹配。
节符号不是 ASCII 字符集的一部分,因此它在 UTF-8 中表示为两个字节。您的终端可能会这样发送它,但应用程序端没有意识到它应该只代表一个字符并且只打印一个字符。命令行编辑器会记录您输入的字符数,并且由于它认为节符号是两个字符,因此它允许您退格那么多字符。终端知道它只是一个,并将其显示为一个并退格。