Você pode pensar em tmux como um emulador de terminal que fornece um terminal que usa o protocolo screen (no "interior") que ele traduz em algum outro protocolo de terminal (no " fora ”), fornecendo recursos como painéis, janelas, sessões, uma barra de status, etc.
Como o tmux sempre fornece um protocolo terminal em screen no “interior”, você deve sempre usar um valor TERM em screen dentro de tmux . Além disso, você deve usar um valor TERM adequado “outside” para que tmux saiba como falar com o terminal em que está sendo executado (geralmente este é seu emulador de terminal, portanto use qualquer terminal em seu emulador de terminal está configurado para fornecer, geralmente uma variante de xterm ).
Especificamente, o problema que você está enfrentando é que screen Início é ESC [ 1 ~ , enquanto é ESC O H in xterm :
% tput -T screen khome | xxd
0000000: 1b5b 317e .[1~
% tput -T xterm khome | xxd
0000000: 1b4f 48 .OH
Então, quando tmux recebe um Início do seu emulador de terminal (decodificando o que está em khome do TERM em vigor quando você está conectado ao tmux session), ele envia o screen -Home ESC [ 1 ~ (porque tmux sempre usa um protocolo screen no "interior"), mas o programa (por exemplo, Emacs) está esperando o xterm -Home ESC O H (porque você disse que esperava os valores xterm definindo TERM=xterm ).
Não tenho certeza de quais problemas de cor que você teve que fizeram com que você tentasse mudar para TERM=xterm dentro de tmux , mas provavelmente você deveria tentar se referir a uma entrada terminfo com suporte a cores em seus valores TERM tanto "dentro" como "fora" tmux : por exemplo configure seu emulador de terminal para definir TERM como xterm-color , xterm-16color , xterm-88color ou xterm-256color conforme apropriado; e use set-option -g default-terminal screen-256color na sua configuração do tmux (ou screen-16color ).