^? 在stty输出意味着什么?

我试图解决一些使用Git Bash shell从我的Windows笔记本电脑连接到Linux服务器的终端问题。 屏幕看起来没有正常刷新(清除不会清除屏幕,在退出vim和man输出后屏幕上等)。 我正在查看stty设置并将其与另一个没有这些问题的linux服务器进行比较。 我在工作服务器上看到的一件事是eol = M-^?; eol2 = M-^?; eol = M-^?; eol2 = M-^?; 。 有人可以向我解释符号吗? 如何在其他服务器上复制此设置?


stty仅限于单字节字符。

bash使用M-前缀的命名约定(就像其他一些程序一样)来表示元标志。 按惯例, ^? 是ASCII DEL(十进制127,十六进制0x7f),所以我期望M-^? 为255(0xff)。

根据实现(请参阅_POSIX_VDISABLE讨论), stty可能会将该值显示为undef

$ stty -a
speed 38400 baud; rows 40; columns 80; line = 0;
intr = ^C; quit = ^; erase = ^H; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff
-iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke

关于meta,ncurses在terminfo(5)有一些文档:

如果终端具有用作移位键的“元键”,则设置所发送的任何字符的第8位,该事实可以用km表示。 否则,软件会认为第8位是奇偶校验,并且通常会被清除。 如果存在字符串来打开和关闭这个“元模式”,它们可以以smmrmm形式给出。

并使用keyname函数,它以这种形式返回值:

高于128的值是元字符(如果屏幕尚未初始化,或者如果已用TRUE参数调用元),以MX表示法显示,或者以其自身显示。 在后一种情况下,这些值可能不可打印; 这遵循X / Open规范。

进一步阅读:

  • Alt键在bash中不起作用
  • 9.13为什么我的Meta键不能在xterm窗口中工作? (GNU Emacs FAQ)
  • 如果_POSIX_VDISABLE值为-1,该怎么办?
  • 17.4.9特殊字符(GNU C库)
  • 链接地址: http://www.djcxy.com/p/25707.html

    上一篇: ^? in stty output mean?

    下一篇: stty RAW console in C