远程主机不支持 tmux 和 screen-256 TERM

远程主机不支持 tmux 和 screen-256 TERM

我已经设置好了我的 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 数据:

  1. 在本地系统上,将描述转储为文本格式:

    infocmp xterm-256color > xterm-256color.ti
    infocmp screen-256color > screen-256color.ti
    
  2. 将文件复制到远程主机并再次编译:

    tic xterm-256color.ti
    tic screen-256color.ti
    

在 Linux 上,描述将存储在 中~/.terminfo。(请注意,自最近的 2023 年更新以来,此位置将不是不能再被“setuid”程序读取,尽管这些程序通常很少见。)

infocmp并且ticncurses或者ncurses-bin大多数 Linux 发行版以及大多数使用ncurses(尽管在 BSD 上可能没有每个用户的数据库)。

答案2

我的.bashrc 中有这个:

alias ssh='TERM=screen ssh'

相关内容