tmux и screen-256 TERM не поддерживаются на удаленных хостах

tmux и screen-256 TERM не поддерживаются на удаленных хостах

Я настроил свой tmux, screen-256colorsи он отлично работает с vim.

Однако когда я подключаюсь по ssh к удаленному хосту из tmux, 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

В большинстве случаев вам необходимо установить необходимоетерминфоописания на удаленном хосте. Terminfo — это то, что программы Linux используют для определения того, как работать с определенным терминалом (какие управляющие коды отправлять).

Например, в 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и ticявляются частьюncursesилиncurses-binпакеты в большинстве дистрибутивов Linux, а также в большинстве BSD, которые используютncurses(хотя в BSD может не быть базы данных для каждого пользователя).

решение2

У меня в .bashrc есть следующее:

alias ssh='TERM=screen ssh'

Связанный контент