Python命令行下退格、删除、方向键乱码问题解决

版权声明:转载请标明出处 https://blog.csdn.net/hanli1992/article/details/85051530

原因

有时候为了学好Linux,得要懂一些Unix考古学,比如为什么Emacs的默认快捷键那么难按,又比如烦人的换行符 \r和\n,以及这次的^H ^? ^[[3~

目前我看到讲考古学讲得最好的书是《UNIX&LINUX大学教程》("Harley Hahn's Guide to Unix and Linux", 作者:Harley Hahn)。书中第七章 Unix键盘使用, 讲述了^H ^? 的来龙去脉

wikipedia上列举了各ASCII码的二进制\十六进制\终端输入\C语言 表示方法

终端 名称 ASCII

备注

^H Bs(退格) 0X08 按 CTRL+H 键可以得到
^? Del 0X7F 只是一种表示方法,按CTRL+? 键得不到这个键值,有时可以通过PC机键盘按 CTRL+Backspace键得到这个值
^[[3~ Delete 0X1b, 0X5b, 0X33, 0X7e 四字节 非ASCII码.PC机键盘上的Delete键

Linux上erase信号表示删除最后键入的字符,这个信号即可以绑定到终端的^H上,也可以绑定到终端的^?上(甚至随便你喜欢的哪个键.) 至于具体绑定在终端哪个键值上,终端上输入 stty -a 可以看到

显示按键的ASCII码命令 showkey -a

在终端里面输入 showkey -a 然后输入按键,可以得到这个按键的ASCII码和二进制,十六进制表示,输入CTRL+D 结束

可以自行实验一下自己键盘上的Backspace、CTRL+Backspace、CTRL+H、Delete 都是什么值

使用远程登录工具的一个常见问题就是远程系统上erase信号和本地键盘Backspace键不匹配,本来是想删除前一个字符,屏幕上却输入了^H

解决办法

# 安装readline模块
yum -y install readline-devel
# 进入Python安装目录
cd /usr/local/Python-2.7.12
# 重新执行Python的安装
./configure
make & make install

猜你喜欢

转载自blog.csdn.net/hanli1992/article/details/85051530
今日推荐