O motivo é que no seu xterm, ^H é o caractere erase e tmux aparentemente traduz o caractere erase para o caractere de controle correspondente ( ^? ) para o terminal emulado, de modo que apagar funciona como esperado no modo cozido (por exemplo, o que acontece quando você digita cat ). A tradução é necessária caso você use um terminal com ^? como o caractere de apagamento (gerado pela tecla Backspace ), então retome a sessão com um terminal que usa ^H como o caractere de apagamento ( gerado pela tecla Backspace ). Infelizmente isto tem efeitos colaterais visíveis em alguns casos, e. se você digitar Ctrl + H .
O único bom remédio é certificar-se de que todos os seus terminais (reais ou em tmux) usem o mesmo caractere erase , que deve ser ^? (isso é padrão hoje em dia). Parece que seu xterm está mal configurado. Esta não é a configuração padrão, AFAIK.
Em qualquer caso, você precisa se certificar de usar um valor TERM para o qual kbs=7 . No entanto, isto não é não no caso de xterm-256color das ncurses oficiais. Portanto, você precisa selecionar um valor TERM diferente ou é necessário corrigir a entrada kbs para xterm-256color (isso pode ser feito pelo usuário final com: infocmp > file , modificar file e, em seguida, tic file ). Algumas distribuições do Linux não possuem esse problema; por exemplo, o Debian corrigiu este problema através de um arquivo debian/xterm.ti em seu pacote ncurses source, dando:
$ infocmp xterm-256color | grep kbs
kbs=7, kcbt=\E[Z, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,
Você também deve ter:
$ appres XTerm | grep backarrowKeyIsErase:
*backarrowKeyIsErase: true
Note que você pode fazer stty erase '^?' no xterm (antes de fazer qualquer outra coisa), mas isso é apenas uma solução alternativa (e pode quebrar o comportamento da tecla Backspace ). Você deve ter erase = ^? (como mostrado por stty -a ) por padrão!
Caso os problemas com Backspace e / ou Delete permaneçam, eu recomendo o BackSpace Consistente e Excluir Configuração documento por Anne Baretta.