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.