Como corrigir um comportamento estranho do backspace com o urxvt + zsh?


15

Eu uso o urxvt em combinação com o zsh. No entanto, desde a minha nova instalação do ubuntu 10.04, tenho o seguinte problema. Se eu digitar backspace, o cursor se moverá para a direita (em vez de excluir os caracteres à esquerda).

Suponha que eu digitei n caracteres e pressione backspace n-times mova o cursor n- posicione para a esquerda; se eu digitar backspace e mais um, o cursor não se moverá mais.

Se eu digitar a seta esquerda, nada acontecerá; se eu digitar a seta direita depois, algum caractere ocorrerá.

mv .zshrc .zshrc.bak
mv .Xdefaults .Xdefaults.bak

não ajudou.

O urxvt + bash funciona bem, assim como o xterm + zsh.

zsh-version: 4.3.11-4ubuntu2.is.3ubuntu1 rxvt-unicode versão: 9.09-3

Alguma idéia de como consertar isso?

Respostas:


19

Tente adicionar o seguinte ao seu .zshrc:

TERM=xterm

Isso corrigiu para mim FWIW.
Seth

5
Melhor uso TERM=xterm-256colorpara suportar 256 cores.
xuhdev

1
Você não está apenas evitando o problema usando xterm em vez de urxvt?
villasv

1
Sim, isso funcionou para mim também. Eu uso o Windows Subsystem para Linux (WSL) com Ubuntu e ZSH e isso me incomoda há tanto tempo. Obrigado por isso.
Dave Reid

7

No zsh, o que bindkey | grep deletediz? Estas são as linhas que recebo:

"^D" delete-char-or-list
"^H" backward-delete-char
"^[3;5~" delete-char
"^[[3~" delete-char
"^?" backward-delete-char

Você deveria ter "^?" como isso representa o backspace. Caso contrário ... você pode ligar bindkey "^?" backward-delete-charno prompt do zsh para instalá-lo.

Isso resolve o problema?


1
bindkey | grep delete "^ D" delete-char-or-list "^?" backward-delete-char
student

1

Você também pode contornar o problema definindo

stty erase '^?'

Aqui estão alguns detalhes sobre o comportamento desviante de certos emuladores de terminal (que é a maneira pela qual certos emuladores têm esse problema): Linux Backspace / Delete mini-HOWTO .


1

É um tópico antigo e talvez ninguém veja isso, mas o problema para mim estava no .Xresourcesarquivo. Eu tinha interpretado mal o URxvt*termNameparâmetro como a string que se tornaria o urxvttítulo da janela. Na verdade, é o que se torna a $TERMvariável de ambiente, a menos que o shell a substitua (o bashfaça).

Minha solução foi adicionar URxvt*termName: xterm-256colorao ~/.Xresourcesarquivo. Como em qualquer alteração nesse arquivo, você precisará executar xrdb -merge ~/.Xresourcese reiniciar completamente urxvt(incluindo urxvtdprocessos daemon) para que as alterações sejam exibidas.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.