知乎热榜 ( ) • 2024-04-17 20:26
d41d8c的回答

这还真有个标准,叫做ECMA-48。

其他回答已经提到了,^[表示ASCII的转义字符(ESC),加上[表示控制序列的开始(CSI)。

然后关于方向键的规定是这样的(04/03表示4×16+3,也就是67在ASCII所对应的字符,图上其他数字也以此类推):

终端其实有很多种模式。在默认模式下,终端会把方向键转换成光标的移动,而不会发给当前正在运行的程序,但程序也可以通过某些设置,使得终端把所有按键都发给程序(比如vim就在一定程度上依赖这样的设置),这时像方向键这样的特殊按键就会以控制序列的形式发送。

而如果程序没能正确处理这些控制序列,而是把它们当作普通字符输出,就会在屏幕上显示乱码