M-^是什么?stty输出平均值



我正在尝试解决使用Git-Bash shell从Windows笔记本电脑连接到linux服务器时遇到的一些终端问题。屏幕似乎没有正确刷新(clear不会清除屏幕,退出vim后,man输出留在屏幕上,等等)。我正在查看stty设置,并将其与另一台没有这些问题的linux服务器进行比较。我在工作服务器上看到的一个东西是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个位是奇偶校验位,并且它通常被清除。如果存在打开此"元模式"的字符串和off,它们可以被给出为smmrmm

使用keyname函数,它会返回以下形式的值:

128以上的值要么是元字符(如果屏幕尚未初始化,或者meta使用TRUE参数调用),以M-X表示法显示,或显示为其本身。在后者情况下,这些值可能无法打印;下面是X/Open规范。

进一步阅读:

  • Alt键在bash中不起作用
  • 9.13为什么我的Meta密钥不能在xterm窗口中工作?(GNU Emacs常见问题解答)
  • 如果_POSIX_VDISABLE值为-1怎么办
  • 17.4.9特殊字符(GNU C库)

最新更新