为什么 macOS 上的屏幕无法获取我的 ~/.terminfo?

为什么 macOS 上的屏幕无法获取我的 ~/.terminfo?

我想得到术语信息让我的终端 (rxvt-unicode) 正常工作,以便当我从 Linux ssh 到 macOS 时,Home/End 和其他键可以正常工作。

通常,为了使用 Linux 远程主机完成此操作,我使用如下脚本:

ssh "$1" 'mkdir -p ~/.terminfo/r'
for f in /usr/share/terminfo/r/rxvt-unicode{,-256color}
do
    scp "$f" "$1":.terminfo/r/
done

但是,这不适用于 macOS。

当我跑步时screen,首先我得到的是“学期太长 - 抱歉。”。

将其更新到brew版本(4.06.02)后,我现在收到“找不到'rxvt-unicode-256color'的terminfo条目”。

TERM正确设置为rxvt-unicode-256color,并且~/.terminfo/r/rxvt-unicode-256color存在。

运行screenTERMINFO=$HOME/.terminfo/没有效果。

答案1

运行screen一遍dtruss(就像stracemacOS 一样)发现以下内容:

2131/0x12997:  access("/Users/vladimir/.terminfo/72/rxvt-unicode-256color\0", 0x4, 0x7FFF5F2B56EC)       = -1 Err#2

无论出于何种原因,screen使用第一个字母的十六进制表示形式而不是简单地使用第一个字母来扇出terminfo目录结构。

因此,要修复它,我必须运行:

ln -s r ~/.terminfo/72

现在一切似乎都正常了。

答案2

ncurses 用途2 个字符对于文件系统(例如 MacOS 和 OS/2),其中文件名是保留大小写/不区分大小写。这记录在NEWS文件。顺便说一句,Apple 提供了旧版本的 ncurses (5.7),对于此功能而言,它仍然足够新。

便携式应用程序不应依赖于终端数据库的任何特定组织......

顺便说一句,xterm-256color 的当前 terminfo 条目不能很好地与旧的 ncurses 5.7 基本系统配合使用,因为颜色对值超出了限制。对 rxvt-unicode 的影响取决于源的构建方式。这在常问问题:

ncurses 6.1引入了对大量功能的支持,例如超过 32767 个颜色对。其他实现通常将超出范围的值视为零。

答案3

infocmp在你的Linux计算机上,反编译软件包中经常使用的terminfo ncurses,并保存到临时文件中。然后您可以将此文件 SCP 发送到您的 Mac。

$ infocmp rxvt-unicode-256color > tmpterminfo

然后在你的 Mac 上,使用命令tic来编译文件,它还会将输出放置在你的主目录中的正确位置:

$ tic tmpterminfo

目前,最终文件位置是,~/.terminfo/72/rxvt-unicode-256color但将来可能会发生变化。

相关内容