我已经设置好了我的 tmuxscreen-256colors
并且它与 vim 配合得很好。
但是,当我从 tmux 内部 ssh 到远程主机时,screen-256colors
无法识别,因此我收到如下错误:
E558: Terminal entry not found in terminfo 'screen-256color' not known. Available builtin terminals are:
builtin_ansi
builtin_xterm
builtin_iris-ansi
builtin_dumb defaulting to 'ansi'
除了编辑每个遥控器.bashrc
(类似于这个建议),有没有什么办法可以TERM
在远程主机上正确且自动地设置?
答案1
在大多数情况下,你需要安装必要的术语信息远程主机上的描述。Linux 程序使用 Terminfo 来确定如何处理特定终端(发送什么控制代码)。
例如,在 Debian 或 Ubuntu 上,您通常需要该ncurses-base
包(它收集所有“已建立的”终端仿真器的 terminfo 数据)。
如果失败的话,您可以手动复制特定终端的 terminfo 数据:
在本地系统上,将描述转储为文本格式:
infocmp xterm-256color > xterm-256color.ti infocmp screen-256color > screen-256color.ti
将文件复制到远程主机并再次编译:
tic xterm-256color.ti tic screen-256color.ti
在 Linux 上,描述将存储在 中~/.terminfo
。(请注意,自最近的 2023 年更新以来,此位置将不是不能再被“setuid”程序读取,尽管这些程序通常很少见。)
infocmp
并且tic
是ncurses或者ncurses-bin大多数 Linux 发行版以及大多数使用ncurses(尽管在 BSD 上可能没有每个用户的数据库)。
答案2
我的.bashrc 中有这个:
alias ssh='TERM=screen ssh'