Comportamento estranho / renderização de backspace no Terminal.app quando o SSHing em zsh usando o tmux / screen

3

Acabei de me deparar com um problema estranho. Quando eu SSH no meu servidor (centos, zsh) e eu digito algumas coisas e bati backspace Ele parece como um espaço - mas internamente realmente excluiu os caracteres.

ls -l a

Observe que o espaço entre l e a é, na verdade, quando eu clico em backspace. Quando eu atingir o retorno ls -a será executado. Isto é apenas em zsh, no bash funciona bem.

Espero que alguém tenha uma ideia do que é isso e como corrigir isso.

Update: Acontece apenas quando se usa o tmux / screen

Eu também não consigo limpar a tela:

helium:~% echo $TERM
screen-256color
helium:~% clear
'screen-256color': unknown terminal type.
    
por Nils Riedemann 05.01.2011 / 10:29

1 resposta

5

Isso é incomum. Eu começaria vendo se o Ctrl-L funciona (isto é, o zsh conhece seu terminal e pode emitir uma tela limpa) e executando echo $TERM para ver qual tipo de terminal zsh recebeu do Terminal.app; Eu tenho Terminal.app enviar xterm-color e que parece ser portável e aceito.

Outra coisa a verificar é o que acontece quando você digita Ctrl-H, mas eu achei que todos os sistemas modernos tinham se estabelecido em 0x7F para backspace.

[pós-atualização com informações da tela:]

O Bash tem mais hacks internos para assumir que os tipos de terminal ausentes são ANSI-ish, mas o problema raiz é que o $TERM não é reconhecido. Isso quebrará a maioria dos aplicativos que desejam emitir diretivas de controle para o emulador de terminal. Substituir $TERM no seu ~/.zprofile :

case ${TERM} in
  screen-256color) TERM=screen.xterm-xfree86
  ;;
esac

Isso faz parte do problema do termcap / terminfo - ele se baseia em todos com os mesmos nomes, todos sendo atualizados, etc. Nenhuma negociação é feita.

    
por 05.01.2011 / 11:38