![使用 xterm 使退格键在多个 Unice 中一致工作](https://linux22.com/image/98372/%E4%BD%BF%E7%94%A8%20xterm%20%E4%BD%BF%E9%80%80%E6%A0%BC%E9%94%AE%E5%9C%A8%E5%A4%9A%E4%B8%AA%20Unice%20%E4%B8%AD%E4%B8%80%E8%87%B4%E5%B7%A5%E4%BD%9C.png)
我在一家使用三种不同的 Unices(Linux、Solaris 和 AIX)的公司工作,所有这些都具有相同的主目录/等。他们都使用 GNU coreutils(谢天谢地!),但尝试解决各种问题仍然是“有趣的”。我们通过在我们的 (Windows) 桌面上运行 X 服务器(超出需求)并使用 xterm 来连接到它们,或者ssh
从现有的 xterm 窗口从另一台计算机进行 ing(还有其他方法,但我目前不使用它们,所以我暂时将它们排除在外)。
特别是,我在 Solaris 上使用退格键时遇到了问题。它可以在 bash 中工作,但在其他一些应用程序(尤其是基于 readline 的应用程序)中只打印 ^H 。
我目前正在使用stty erase ^H
my 中的解决方案~/.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 字符串作为参考(如果可用)。无论哪种情况,结果都会应用于
TERMCAP
xterm 设置的变量。另请参阅tty模式资源,这可能会覆盖它。默认值为“假”。
但要使xterm
行为始终如一,ttyModes
是有效的。请记住,改变stty
仅告诉系统会发生什么。您可以更改后退箭头(退格键)键使用确认箭头键资源:
指定是否后退箭头键传输退格 (8) 或删除 (127) 字符。这对应于
DECBKM
控制序列。 “true”值指定退格键。默认值为“真”。按控制键可切换此行为。