我想让我的终端(rxvt-unicode)工作的Terminfo,这样当我从 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
,首先我得到“TERM too long - sorry.”。
将其更新到 brew 版本 (4.06.02) 后,我现在收到“找不到 'rxvt-unicode-256color' 的 terminfo 条目”。
TERM
正确设置为rxvt-unicode-256color
,并且~/.terminfo/r/rxvt-unicode-256color
存在。
运行screen
withTERMINFO=$HOME/.terminfo/
也没有效果。
运行(如macOS)揭示了以下内容
screen
:dtruss
strace
无论出于何种原因,
screen
使用第一个字母的十六进制表示而不是简单的第一个字母来展开terminfo
目录结构。所以,要修复它,我必须运行:
现在一切似乎都正常了。
ncurses对文件系统(例如 MacOS 和 OS/2)使用2 个字符,其中文件名保留大小写/不区分大小写。这记录在
NEWS
文件中。顺便说一句,Apple 提供了旧版本的 ncurses (5.7),对于此功能来说它仍然足够新。便携式应用程序不应依赖于终端数据库的任何特定组织......
顺便说一句,xterm-256color 的当前 terminfo 条目不能很好地与旧的 ncurses 5.7 基本系统配合使用,因为颜色对值超出了限制。对 rxvt-unicode 的影响取决于源的构造方式。常见问题解答中提到了这一点:
在你的 linux 电脑上,反编译
infocmp
经常和包一起打包的 terminfoncurses
,并保存到一个临时文件中。然后,您可以将此文件 SCP 到您的 mac。然后在你的 mac 上,使用
tic
命令编译文件,它也会将输出放在你主目录的正确位置:目前,最终文件位置是
~/.terminfo/72/rxvt-unicode-256color
,但将来可能会改变。