使用 xterm 使退格键在多个 Unice 中一致工作

使用 xterm 使退格键在多个 Unice 中一致工作

我在一家使用三种不同的 Unices(Linux、Solaris 和 AIX)的公司工作,所有这些都具有相同的主目录/等。他们都使用 GNU coreutils(谢天谢地!),但尝试解决各种问题仍然是“有趣的”。我们通过在我们的 (Windows) 桌面上运行 X 服务器(超出需求)并使用 xterm 来连接到它们,或者ssh从现有的 xterm 窗口从另一台计算机进行 ing(还有其他方法,但我目前不使用它们,所以我暂时将它们排除在外)。

特别是,我在 Solaris 上使用退格键时遇到了问题。它可以在 bash 中工作,但在其他一些应用程序(尤其是基于 readline 的应用程序)中只打印 ^H 。

我目前正在使用stty erase ^Hmy 中的解决方案~/.profile以及 my 中的以下解决方案~/.Xdefaults

*VT100.Translations: #override \
              <Key>BackSpace: string(0x08)\n

这似乎在大多数情况下都有效,但可能并不理想,因为我明确地将退格键设置为可能不是每个平台上的默认/首选的键。特别是,我在使用时经常收到消息reset提醒我已将擦除设置为^H,并且偶尔会在一系列我尚未弄清楚的情况下再次中断;也许在基于 readline 的应用程序中可以工作,但在 bash 中不行;我必须打字reset才能让一切恢复正常。

这些问题使我相信这可能不是这样做的首选方式。有人对这种情况有什么改进吗?

答案1

一些应用程序被硬编码为期望给定的擦除字符,并且您对此无能为力。

但针对评论

我更想知道是否应该做其他事情来尝试让 xterm 发送的退格键与 TTY 设备预期的默认退格键相匹配。

可以设置pty初始擦除资源:

如果为“true”,xterm 将使用伪终端的 stty 擦除值。如果为“false”,xterm 将设置 stty 擦除值以匹配其自己的配置,使用 termcap 条目中的 kb 字符串作为参考(如果可用)。无论哪种情况,结果都会应用于TERMCAPxterm 设置的变量。

另请参阅tty模式资源,这可能会覆盖它。默认值为“假”。

但要使xterm行为始终如一,ttyModes是有效的。请记住,改变stty仅告诉系统会发生什么。您可以更改后退箭头(退格键)键使用确认箭头键资源:

指定是否后退箭头键传输退格 (8) 或删除 (127) 字符。这对应于DECBKM 控制序列。 “true”值指定退格键。默认值为“真”。按控制键可切换此行为。

相关内容