我不知道爲什麼在常見的Linux終端退格鍵實際上並不刪除字符,打印時(通常鍵入時有效)..退格性格古怪
這按預期工作:
$ echo -e "abc\b\b\bxyz"
xyz
( \b
計算結果爲退格,也可以插入作爲Ctrl鍵 + VCtrl鍵 + ħ - 呈現爲^H
(0x08
))
,但是當有在退格後更少的字符,行爲怪異揭曉:
$ echo -e "abc\b\b\bx"
xbc
它像左箭頭鍵而不是退格鍵:
$ echo -e "abc\e[D\e[D\e[Dx"
xbc
擦除回線正常工作:
$ echo -e "abc\e[1Kx"
x
實際上當I型按Ctrl + V退格在終端,^?
(0x7f
)的產生,而不是^H
,這是德爾 ASCII字符,但Ctrl鍵 + V德爾產生<ESC>[3~
,但這是另一回事..
所以有人可以解釋爲什麼打印退格字符不會擦除字符?
(我的環境是Linux的的xterm和其他一些終端仿真器,$TERM
== xterm
,試圖vt100
,Linux
爲好)
好吧,這不是一個解釋_why_退格控制字符的行爲像左光標鍵,而不是根據普通意義上(擦除最後一個字符) – mykhal 2010-05-18 10:51:00
現在我很滿意,謝謝你的spec鏈接:) – mykhal 2010-05-18 11:23:06
真正的原因它的工作原理這種方式是因爲更舊的「硬拷貝」終端,像打字機一樣在紙上打印。在這樣的終端上,一旦輸出字符就無法擦除字符。類似打字機的終端也是我們仍然在Windows上使用單獨的「回車」和「換行」字符結束行的原因。 – alexis 2012-03-12 13:24:04