相关疑难解决方法(0)

退格字符怪异

我想知道为什么普通Linux终端中的退格字符实际上不会在打印时擦除字符(通常在键入时有效).

这按预期工作:

$ echo -e "abc\b\b\bxyz"
xyz
Run Code Online (Sandbox Code Playgroud)

(\b评估为退格,也可以插入Ctrl+ V Ctrl+ H- 呈现为^H(0x08))

但是当退格后的字符数量减少时,会发现奇怪的行为:

$ echo -e "abc\b\b\bx"
xbc
Run Code Online (Sandbox Code Playgroud)

它的行为类似于左箭头键而不是退格键:

$ echo -e "abc\e[D\e[D\e[Dx"
xbc
Run Code Online (Sandbox Code Playgroud)

擦除线后退工作正常:

$ echo -e "abc\e[1Kx"
x
Run Code Online (Sandbox Code Playgroud)

事实上,当我在终端输入Ctrl+ V Backspace时,^?(0x7f)产生而不是^H,这是Delascii字符,但是Ctrl+ V Del产生<ESC>[3~,但它是另一个故事..

那么有人可以解释为什么打印的退格字符不会删除字符吗?

(我的环境是xterm的Linux和一些其他的终端仿真器,$TERM== xterm,试图vt100,Linux以及)

terminal text backspace

10
推荐指数
1
解决办法
1万
查看次数

标签 统计

backspace ×1

terminal ×1

text ×1