Eu configurei meu tmux para usar screen-256colors
e funciona muito bem com o vim.
No entanto, quando faço ssh para um host remoto de dentro do tmux, screen-256colors
ele não é reconhecido, então estou recebendo erros como este:
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'
Além de editar cada controle remoto .bashrc
(semelhante aesta sugestão), existe alguma maneira de definir TERM
correta e automaticamente no host remoto?
Responder1
Na maioria dos casos, você precisa instalar o necessárioinformações do termodescrições no host remoto. Terminfo é o que os programas Linux usam para determinar como lidar com um terminal específico (quais códigos de controle enviar).
Por exemplo, no Debian ou Ubuntu você geralmente precisa do ncurses-base
pacote (que coleta dados terminfo para todos os emuladores de terminal "estabelecidos").
Caso contrário, você pode copiar manualmente os dados terminfo para terminais específicos:
No sistema local, despeje a descrição no formato de texto:
infocmp xterm-256color > xterm-256color.ti infocmp screen-256color > screen-256color.ti
Copie os arquivos para o host remoto e compile-os novamente:
tic xterm-256color.ti tic screen-256color.ti
No Linux, as descrições serão armazenadas em formato ~/.terminfo
. (Observe que a partir das atualizações recentes de 2023, este local seránãonão pode mais ser lido por programas "setuid", embora geralmente sejam raros.)
infocmp
e tic
fazem parte domaldiçõesouncurses-binpacotes na maioria das distribuições Linux, bem como na maioria dos BSDs que usammaldições(embora em BSDs possa não haver um banco de dados por usuário).
Responder2
Eu tenho isso no meu .bashrc:
alias ssh='TERM=screen ssh'